PDA

View Full Version : مشکل این کد سی شارپ در کار با دیتابیس چیست؟



mehdisiavashian
دوشنبه 12 شهریور 1386, 12:56 عصر
SqlConnection objConnection;
SqlDataAdapter objDataAdabter;
DataTable objDataTable;

private void frmAddNewType_Load ( object sender, EventArgs e )
{
objConnection = new SqlConnection ( "server=MEHDI;database=indexer;uid=sa;pwd=" );
objDataAdabter = new SqlDataAdapter ( "select fileTypeName as 'نوع فایل', comment as 'توضیحات ' from indexer_fileType", objConnection );
objDataTable = new DataTable ();
objDataAdabter.Fill ( objDataTable );
dataGridView1.DataSource = objDataTable;
objConnection.Close ();
}

private void btnSave_Click ( object sender, EventArgs e )
{
objDataAdabter.InsertCommand = new SqlCommand ( "insert into indexer_fileType (fileTypeName, comment) values (@fileTypeName, @Comment)" ,objConnection);
objDataAdabter.InsertCommand.Parameters.AddWithVal ue ( "@fileTypeName", txtFileType.Text );
objDataAdabter.InsertCommand.Parameters.AddWithVal ue ( "@Comment", txtFileType.Text );
objDataAdabter.Update (objDataTable);
objDataTable.Clear ();
//Refresh DataSet with new Data
objDataAdabter.Fill ( objDataTable );
objConnection.Close ();
//Rfresh Grid With New DataSet
dataGridView1.Refresh ();

//Clear Form
txtFileType.Clear ();
txtComments.Clear ();
txtFileType.Focus ();

}


با کلیک بر دکمه btnSave تغییرات (آیتم جدید) در جدول اعمال نمی شود
با تشکر

MH2538
دوشنبه 12 شهریور 1386, 13:18 عصر
برادر شما که InsertCommand رو خودت نوشتی حالا بجای Update این دستور رو بنویس


DA.InsertCommand.ExecuteNonQuery();

mehdisiavashian
دوشنبه 12 شهریور 1386, 14:53 عصر
//Initialize INSERT Command.
this.oleDbDataAdapter1.InsertCommand = new OleDbCommand("INSERT INTO Table1 (Field1, Field2) VALUES (@field1, @field2)", this.oleDbConnection1);
this.oleDbDataAdapter1.InsertCommand.Parameters.Ad dWithValue("@field1", typeof(string)).SourceColumn = "Field1";
this.oleDbDataAdapter1.InsertCommand.Parameters.Ad dWithValue("@field2", typeof(string)).SourceColumn = "Field2";
......
// and u call update method......
......
//اگر متد زیر را صدا بزنید، تمام تغییرات در بانک اطلاعاتی ذخیره میگردد
oleDbDataAdapter1.InsertCommand.CommandText.ToStri ng () );
this.oleDbDataAdapter1.Update(dataTable1);


با تشکر از توجه شما .... من کدم رو با توجه به کدهای بالا که در یکی از پستهای همین فروم (به نام UpdateMethod لینکش رو الان ندارم) نوشتم. البته نویسنده محترم کد، با گرید کار کرده بود.
راستی من تازه کارم نمی دونم کجای کد من اینقدر حرص شما را درآورده بود که با کمال برزگواری خشم خود را فرو برده و گفتید : "برادر شما که InsertCommand رو خودت نوشتی" :چشمک:
من متوجه نشدم که این دستور update چجوری کار می کنه!

MH2538
دوشنبه 12 شهریور 1386, 14:58 عصر
سلام
نه خشمگین نبودم بخدا.اگر سوءتفاهم شد ببخشید.
ببینید دوست عزیز شما میتونید در مرحله اول یک CommandBuilder در ارتباط با DataAdapter برنامه‌اتون بنویسید .بعد اطلاعاتتون رو داخل دیتاست بریزید.
در نهایت هر زمان که خواستید می‌تونید DataAdapter‌رو Updateکنید.
خود CommandBuilder در پشت صحنه برنامه شما کد مورد نیاز برای Updateو Delete و Insert رو می‌سازه و از طریق DataAsapter که به اون مربوط میشه دیتابیس رو Update‌می کنه.