PDA

View Full Version : مبتدی: عمل نکردن دستور اینسرت و آپدیت



nemann
دوشنبه 20 خرداد 1398, 09:49 صبح
سلام دوستان گرامی
من میخوام تمام اطلاعاتی که تو دیتا گرید ویو ثبت میشه همون لحظه تو بانکم ذخیره بشه این قطعه برنامه رونوشتم
ولی چند تا مشکل داره مشکل داره

1 . ی سطرو آپدیت میکنه ولی تمام اطلاعات قبلی رو اگه فارسی باشه به صورت علامت سوال نشون میده
2.وقتی ی ستون دارم اطلاعاتشو وارد میکنم بعد میرم که ستون بعدی رو وارد کنم ی سطر اضافه میکنه و وقتی ستون دومو وارد میکنم میرم ستنون بعدی بازم ی سطر دیگه اضافه میکنه - یعنی مثل این عکس میشه جدولم
150333

بانکم 4تا ستون داره
ncontactId == int
(name == nvarchar (250
family==nvarchar (250
personalnumber==int





private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
id = dataGridView1.CurrentRow.Cells[0].Value.ToString();
if (id=="")
{

String conectionstring = "data source =.;initial catalog=db_ass;integrated security =true ";
SqlConnection conection = new SqlConnection(conectionstring);
string query = " insert into tbluser values ( '" + dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()+"','" + dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString()+"','" + dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString()+"'";
SqlCommand comand = new SqlCommand(query, conection);


conection.Open();
comand.ExecuteNonQuery();

conection.Close();
NewMethod();







}
else
{
String conectionstring = "data source =.;initial catalog=db_ass;integrated security =true ";
SqlConnection conection = new SqlConnection(conectionstring);
string query1 = " update tbluser set name= '" + dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString() + "',family='" + dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString() + "',personalnumber='" + dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString() + "' where ncontactId="+id+"";
SqlCommand comand1 = new SqlCommand(query1, conection);


conection.Open();
comand1.ExecuteNonQuery();
conection.Close();
NewMethod();
}

محمد رضا فاتحی
دوشنبه 20 خرداد 1398, 21:49 عصر
سلام
برای فارسی نوشتن که باید قبل از فیلدهاتون N بزارید و نوعش از نوع NVARCHAR باشه و بارها تکرار شده
برای مشکل اینسرت هم شما اومدین دستور INSERT رو داخل رخداد VALUECHANGE گذاشتین و هربار که یکی از سلولها تغییر میکنه یه رکورد ثبت میشه اشتباهتون همینجاس

nemann
سه شنبه 21 خرداد 1398, 11:14 صبح
متشکرم من این کدو نوشتم ولی این پیغامو میده 150344


private void button2_Click(object sender, EventArgs e)
{
for (int i =0;i<dataGridView1.Rows.Count;i++)
{
String conectionstring = "data source =.;initial catalog=db_ass;integrated security =true ";
SqlConnection conection = new SqlConnection(conectionstring);
string query = " insert into tbluser values ('" + dataGridView1.Rows[i].Cells[0].Value.ToString() + "', '" + dataGridView1.Rows[i].Cells[1].Value.ToString() + "','" + dataGridView1.Rows[i].Cells[2].Value.ToString() + "','" + dataGridView1.Rows[i].Cells[3].Value.ToString() + "')";
SqlCommand comand = new SqlCommand(query, conection);


conection.Open();


comand.ExecuteNonQuery();


conection.Close();

}
ولی بعدا که میرم تو بانکم اطلاعاتم ثبت شده نمیدونم دقیقا کدوم خالی میره واسه بانک
ستون اول و اخرم از نوع int
دوتاستون وسط nvarchar

ممنون میشم جواب بدید

محمد رضا فاتحی
سه شنبه 21 خرداد 1398, 12:12 عصر
اگه دیتاگریدتون add , edit ش فعاله احتمال میدم باتوجه به کدهاتون رو خط آخر خطا میده.شما حلقه for رو یه مرحله کم کنید ببیند درست میشه یا نه