PDA

View Full Version : مبتدی: ذخیره ی ایتمهای listbox در پایگاه داده



voice.of.silence
سه شنبه 01 اسفند 1396, 10:19 صبح
سلام دوستان:
من می خوام که تمامی آیتمهای یک لیستباکس رو وارد پایگاه داده کنم اما نمی دونم که چرا فقط آیتم اولی وارد می شه و زمانی که می خواد دومی رو وارد کنه دوباره اولی رو وارد می کنه که با خطای ایتم تکراری رو به رو می شه.
من از کد زیر استفاده می کنم. خوشحال می شم اگه منو برای رفع این مشکل راهنمایی کنید.

try
{
SqlCommand cmd = new SqlCommand("insert into vocab(vocab)values(@vocab)", connection);

connection.Open();
for(int i=0; i<lstvocab.Items.Count; i++)
{
cmd.Parameters.AddWithValue("@vocab", lstvocab.Items[i].ToString());
cmd.ExecuteNonQuery();
MessageBox.Show("Done");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close();
}

danialafshari
سه شنبه 01 اسفند 1396, 11:03 صبح
با سلام
لطفاً از تگ C#‎ برای قرار دادن کدهاتون استفاده کنید
باید به ازای هر ثبت در دیتابیس کانکشن باز و بسته شود
از کد زیر استفاده کنید:

SqlConnection con = new SqlConnection(@"Data Source=.\SqlExpress;Initial Catalog=dbTest;Integrated Security=true;");
public void add(string Item)
{
SqlCommand cmd = new SqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = @"INSERT INTO Persons (FirstName ) VALUES (@FirstName)";
cmd.Parameters.AddWithValue("@FirstName", Item);
cmd.ExecuteNonQuery();
con.Close();
}
private void AddNew_Click(object sender, EventArgs e)
{
for (int i = 0; i < lstvocab.Items.Count; i++)
{
add(lstvocab.Items[i].ToString());
}
}

طبق پروژه خودتون شخصی سازیش کنید
موفق باشید

Mahmoud.Afrad
سه شنبه 01 اسفند 1396, 16:33 عصر
علتش این هست که در تکرار دوم حلقه ، پارامتر تکراری میشه و نمیتونه پارامتری با همون نام ایجاد کند. در حلقه چک کنید اگر پارامتر از قبل موجود نبود پارامتر را ایجاد کنید و بعد مقداردهی کنید.