PDA

View Full Version : سوال: ذخیره گرید ویو در بانک اطلاعاتی



enekas
شنبه 04 شهریور 1391, 10:25 صبح
سلام دوستان بزرگوار

چطوری میشه اطلاعات یک گریدویو را که 5 سطر و 5 ستون دارد در بانک اطلاعاتی ذخیره کرد
.
ممنون

amir-aa
شنبه 04 شهریور 1391, 10:29 صبح
اگر جدولشو توی دیتابیس داری اینجوری باید مثل کد زیر رو بنویسی


SqlConnection conn = new SqlConnection(connectionstring);
string query1 = "insert into company(name,kind,phone,address,pool) values('" + dataGridViewX1.CurrentRow.Cells[1].Value + "','" + dataGridViewX1.CurrentRow.Cells[2].Value + "','" + dataGridViewX1.CurrentRow.Cells[3].Value + "','" + dataGridViewX1.CurrentRow.Cells[4].Value + "','" + dataGridViewX1.CurrentRow.Cells[5].Value + "')";
SqlCommand cm1 = new SqlCommand(query1, conn);
conn.Open();
cm1.ExecuteNonQuery();
conn.Close();

mousa1992
شنبه 04 شهریور 1391, 10:46 صبح
سلام دوست عزیز
شما باید تمام رکورد های گرید رو بپیمایید و ستون های مورد نظر از سطر هارو ذخیره میکنید
با استفاده از foreach میتونید این کار رو انجام بدید

foreach (DataGridViewRow row in dataGridView1.Rows)

و با استفاده از خاصیت Cells مقدار ستون مورد نظر رو استخراج میکنید و میتونه در دیتابیس ذخیره بشه

row.Cells["index or name"]

veniz2008
شنبه 04 شهریور 1391, 11:00 صبح
اگر جدولشو توی دیتابیس داری اینجوری باید مثل کد زیر رو بنویسی


SqlConnection conn = new SqlConnection(connectionstring);
string query1 = "insert into company(name,kind,phone,address,pool) values('" + dataGridViewX1.CurrentRow.Cells[1].Value + "','" + dataGridViewX1.CurrentRow.Cells[2].Value + "','" + dataGridViewX1.CurrentRow.Cells[3].Value + "','" + dataGridViewX1.CurrentRow.Cells[4].Value + "','" + dataGridViewX1.CurrentRow.Cells[5].Value + "')";
SqlCommand cm1 = new SqlCommand(query1, conn);
conn.Open();
cm1.ExecuteNonQuery();
conn.Close();

این روش، روش بهینه ای نیست. اگر مثلا 100 رکورد داشته باشیم باید 100 بار به دیتابیس وصل بشیم و عمل درج رو انجام بدیم. یک راه بهتر اینه که درون یک حلقه(به تعداد رکوردها) همه رکوردها رو درون یک متغیر رشته ای ذخیره کنیم و در بیرون از حلقه با یکبار وصل شدن به دیتابیس عمل درج رکوردها رو انجام بدیم.بصورت زیر ( در کد زیر اولین ستون گرید من از نوع int هست بخاطر همین از کوتیشن استفاده نشده):
تذکر: گزینه Enable Adding مربوط به گرید رو غیرفعال کنید(تیکش رو بردارید).

string s = "";
int t = dataGridView1.Rows.Count;
for (int i = 0; i <= t - 1; i++)
{
s = s + "insert into student2 values(" + dataGridView1.Rows[i].Cells[0].Value + ",'" + dataGridView1.Rows[i].Cells[1].Value + "',N'" + dataGridView1.Rows[i].Cells[2].Value + "',N'" + dataGridView1.Rows[i].Cells[3].Value + "')" + ";";
}

s = s.Remove(s.Length - 1, 1);
con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
cmd.ExecuteNonQuery();
con.Close();

amir-aa
دوشنبه 06 شهریور 1391, 12:38 عصر
من الان یک مشکل دارم وقتی از روش شما استفاده میکنم همیشه یک سطر اضافه با مقدار 0 توی جدولم میذاره

veniz2008
دوشنبه 06 شهریور 1391, 14:49 عصر
گزینه enable adding مربوط به گرید رو که در بالا گفته بودم رو غیر فعال کردید؟. این گزینه باعث میشه که اگه جدول شما 5 رکورد داره گریدویو شما 6 رکورد داشته باشه که یک سطر خالی در گرید هم نمایش داده میشه. با غیرفعال کردن این گزینه تعداد رکوردهای شما دقیقا با تعداد سطرهای گرید یکسان میشه و دیگه رکورد خالی نمایش داده نمیشه.