PDA

View Full Version : انتقال اطلاعات از datagridview به database



محمد علی کارگر
جمعه 26 آذر 1395, 09:19 صبح
با سلام من یک فرم دارم که درون آن یک تکست باکس دارم به همراه یک دیتا گرید ویو در تکست باکس من یک کدی ثبت می گردد و در دیتا گرید ویو هم اطلاعات مربوط به آن کد ثبت می گردد .تعداد ردیف های دیتا گرید ویو متغیر می باشد و مشکل بنده اینه که چه کدی بزارم که با زدن یک باتن در روی فرم اطلاعات مربوط به آن کد در دیتابیس بشینه

0065(کد فرمول)




مقدار
نام ماده


45
گندم


30
سویا




مقدار
نام ماده
کد


45
گندم
0065


30
سویا
0065







جدول دیتابیس دیتا گرید ویو

مثل جدول فوق که دو رکورد دارم فقط دو بار کد 0065 تکرار شده ولی اگه مثلا ده تا بود باید ده تا رکورد تو جدول دیتابیس تکرار بشه .اگه کسی کمکم کنه ممنون میشم

csharpcollegian
شنبه 27 آذر 1395, 12:12 عصر
سلام
نمی دونم درست متوجه منظورتون شدم یا نه، اما اگر فقط مشکلتون با تعداد متغیر رکوردها در دیتاگریدویو هستش براحتی می تونید به کمک یه for کل دیتاگریدویو رو پیمایش کنید و رکوردها رو در دیتابیس ثبت کنید.
مثلا می تونید داخل حلقه for رکوردها رو تک تک در دیتابیس ثبت کنید :


for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
// Insert dataGridView1.Rows[i]
}

موفق باشید

محمد علی کارگر
شنبه 27 آذر 1395, 13:13 عصر
private void button1_Click(object sender, EventArgs e)
{
try
{
if (dataGridView1.Rows.Count > 1)
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
{
string Column1 = dataGridView1.Rows[i].Cells[0].Value.ToString();
string Column2 = dataGridView1.Rows[i].Cells[1].Value.ToString();



{
string insert = "INSERT INTO RECIPTION(Column1 ,Column2) VALUES(@Column1,@Column2)";
Form1 .conn .Open();
SqlCommand cmd = new SqlCommand(insert, Form1.conn);
cmd.Parameters.AddWithValue("@Column1", SqlDbType.NVarChar).Value = dataGridView1.Rows[i].Cells[0].Value;
cmd.Parameters.AddWithValue("@Column2", SqlDbType.NVarChar).Value = dataGridView1.Rows[i].Cells[1].Value;

cmd.ExecuteNonQuery();

}
}
Form1.conn.Close();
}
}
catch (Exception ex)
{
ex.Message.ToString();
}


}
سلام دوست عزیز این کدهام هست هر کار که میکنم ذخیره نمیکنه البته یکسری کارای دیگه هم دارم که در تصاویر فزستادم اگه کمکم کنید یه دنیا ممنون میشم

محمد علی کارگر
شنبه 27 آذر 1395, 16:10 عصر
private void button2_Click_1(object sender, EventArgs e)


{




for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
Form1.conn.Open();


SqlCommand cmd = new SqlCommand();


cmd.Connection = Form1.conn;



cmd.CommandText = "insert into RECIPTION Values('" + textBox1 .Text +



"','" + dataGridView1.Rows[i].Cells[1].Value +


"','" + dataGridView1.Rows[i].Cells[2].Value + "') ";




cmd.ExecuteNonQuery();
Form1.conn.Close();
}
}



مشکلم با انتقال ردیف های دیتا گرید ویو حل شد با کد بالا ؛فقط نمتونم متن داخل تکست باکس را به تعداد ردیف های دیتا گرید ویو در دیتابیس تکرار کنم .

csharpcollegian
شنبه 27 آذر 1395, 23:59 عصر
مشکلم با انتقال ردیف های دیتا گرید ویو حل شد با کد بالا ؛فقط نمتونم متن داخل تکست باکس را به تعداد ردیف های دیتا گرید ویو در دیتابیس تکرار کنم .



سلام
فقط کافیه توو همون کوئریتون متن تکست باکستون رو هم اضافه کنید :


string Insert = "INSERT INTO RECIPTION(Column0 ,Column1 ,Column2) VALUES(@Column0,@Column1,@Column2)";
cmd.Parameters.AddWithValue("@Column0", SqlDbType.NVarChar).Value = textBox1.Text;
cmd.Parameters.AddWithValue("@Column1", SqlDbType.NVarChar).Value = dataGridView1.Rows[i].Cells[0].Value;
cmd.Parameters.AddWithValue("@Column1", SqlDbType.NVarChar).Value = dataGridView1.Rows[i].Cells[1].Value;

به این نکته توجه داشته باشید که بهتره Connection به دیتابیس رو قبل حلقه for باز کنید و بعد از پایانش ببندید.
موفق باشید