PDA

View Full Version : اضافه کردن چند سطر به ديتابيس



mina1363
پنج شنبه 20 تیر 1387, 21:43 عصر
سلام دوستان
من میخوام چند سطر را ابتدا وارد dataset کنم بعد از dataset وارد database کنم ولی نمیدونم چه جوری میشه ؟

hdv212
پنج شنبه 20 تیر 1387, 22:37 عصر
چند سطر یا رکورد ؟
شما ابتدا بایستی رکوردها رو توسط DataRow به DataTable ات اضافه کنی، بعد توسط DataAdapter تغییرات به Database منعکس کنی، مثلا این نمونه کد، یک رکورد جدید به آبجکت DataTable ما اضافه میکنه :

DataRow row = this.dt.NewRow();
row["name"] = this.textBox1.Text;
row["number"] = this.textBox2.Text;
this.dt.Rows.Add(row);

و این کد، رکوردهای موجود در آبجکت DataTable رو به دیتابیس منعکس میکنه :

using (SqlConnection con = new SqlConnection("data source=.;initial catalog=mydb;trusted_connection=true;"))
{
SqlCommand cmd = new SqlCommand("select * from t1", con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.InsertCommand = builder.GetInsertCommand();
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.Update(this.dt);
this.dt.Rows.Clear();
}

البته یادتون باشه که آبجکت DataTable شما با ساختار جدولتون مطابقت داشته باشه (از لحاظ فیلدها).
مثلا قبل از تمام کدهای بالا، من این متد زیر رو برای Initialize کردن آبجکت DataTable ام فراخوانی کردم :

private void InitDataTable()
{
DataColumn dc2 = new DataColumn("name");
DataColumn dc3 = new DataColumn("number");
this.dt.Columns.Add(dc2);
this.dt.Columns.Add(dc3);
}
موفق باشید.

mina1363
یک شنبه 23 تیر 1387, 15:47 عصر
دوست عزیز ولی وقتی به این کد میرسه exception میدهد با متن زیر
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
این پیغام را روی
da.UpdateCommand = cb.GetUpdateCommand();
میدهد حالا باید چکار کنم ؟

mina1363
دوشنبه 24 تیر 1387, 11:17 صبح
هیچ کس نمی تواند راه حلی ارائه بده که این مسئله هم حل بشه؟