editpic.jpg
دوستا گل این ارور چیه؟
editpic.jpg
دوستا گل این ارور چیه؟
۱. کدتون مشکل بنیادی داره.(باید از SqlParameter استفاده کنید.)
۲.دقیقاْ همون چند کاراکتری که مشکل داره توی تصویر نیست.
خطا میگه که:آرایتون از مکانی که میخواهید بهش دسترسی پیدا کنید کوتاه تره.
این کد up تو کلاس /public static void Update(string strUpdate)
{
using (OleDbConnection con = new OleDbConnection(databaseAddress))
{
con.Open();
OleDbCommand cmd = new OleDbCommand(strUpdate, con);
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("اطلاعات با موفقیت ویرایش شد");
}
catch //(Exception er)
{
MessageBox.Show("این کد قبلا ثبت شده است ");
// MessageBox.Show(er.Message);
}
finally
{
con.Close();
}
}
}
اینم دستور ارسالیم با تمومه txtbox هایی که رو فرمم دارم.
string s21 = String.Format("update tell set Name='{0}',family='{1}',tell='{2}' where Tell='{3}'", textBox4.Text, textBox3.Text, txtProNet1.Text, dataGridView2.CurrentRow.Cells[2].Value.ToString());
Access.Update(s21);
الان 3 تا فیلد دارم که هر 3 تاشو رو بررسی کردم. که tell فیلد کلید ماست الان من مثلا name رو update نکنم
برنامه این ارور رو میده . چرا ؟ چطوری باید بنویسم تا اونایی که دلخواهمونه update کنیم. من مجبورم همه ی فیلد های جلدو بررسی کنم.
سلام دوست عزیز
اروری که داده formatexceptin هست و این ارور وقتی رخ میده که داده ها با هم از لحاظ نوع فرق داشته باشند مثلا توی یه فیلد عددی مقادیر رشته ای بریزی
درسته ربطی نداره
Aliasghar2 درست میگه از SqlParameter استفاده کنی بهتره اما می تونی
مستقیم هم مقادیر رو قرار بدی
یه نگاهی به http://www.codeproject.com/KB/databa...readwrite.aspx
بنداز
اخه مستقیم که همونه که خودم استفاده کردم که جواب نمیده .
پارامتری رو چه شکلی استفاده کنم ؟
سلام.
این یک نمونه کد بدون exceptionHandling و کد های اضافه.
فقط تنها موردی که داره اینه که بیش از حد OO ه.
شما میتونید به جای پارامتر ها از دیتا تایپ های خود جدول استفاده کنید.مثل int و string.
این کد autogenerate شده. و باید برای هر جدول جدا نوشته بشه.
برای این کار باید یک code generator درست/استفاده کنید.
برای اطلاعات بیشتر مستونید اسم کلاسها رو در MSDN جست و جو کنید.اونحا هم یک سری مثال هست.
اگر باز هم سوالی بود من در خدمتم.
internal class Tafsily_H
{
private System.Data.SqlClient.SqlCommand UpdateCommand, DeleteCommand, InsertCommand;
private System.Data.SqlClient.SqlConnection Connection;
internal Tafsily_H()
{
Connection = SharedDataObjects.GetThreadUnsafeConnection();
UpdateCommand = new System.Data.SqlClient.SqlCommand();
DeleteCommand = new System.Data.SqlClient.SqlCommand();
InsertCommand = new System.Data.SqlClient.SqlCommand();
UpdateCommand.Connection = Connection;
DeleteCommand.Connection = Connection;
InsertCommand.Connection = Connection;
UpdateCommand.CommandType = System.Data.CommandType.Text;
UpdateCommand.Parameters.Add("P_Index",System.Data .SqlDbType.BigInt, 0, "Index");
UpdateCommand.CommandText = "Update Tafsily SET [Moin] = @Moin Where [Index] = @P_Index";
UpdateCommand.Parameters.Add("Moin",System.Data.Sq lDbType.BigInt, 0, "Moin");
InsertCommand.CommandType = System.Data.CommandType.Text;
InsertCommand.CommandText = "Insert Into Tafsily([Moin]) Values (@Moin)";
InsertCommand.Parameters.Add("Moin",System.Data.Sq lDbType.BigInt, 0, "Moin");
DeleteCommand.CommandType = System.Data.CommandType.Text;
DeleteCommand.CommandText = "Delete From Tafsily where [Index] = @Index";
DeleteCommand.Parameters.Add("Index",System.Data.S qlDbType.Decimal, 0, "Index");
}
public void Commit(TafsilyEditEventArgs o)
{
UpdateCommand.Parameters["P_Index"].Value = o.B_Index;
UpdateCommand.Parameters["Moin"].Value = o.Moin;
UpdateCommand.ExecuteNonQuery();
}
public void Commit(TafsilyInsertEventArgs o)
{
InsertCommand.Parameters["Moin"].Value = o.Moin;
InsertCommand.ExecuteNonQuery();
}
public void Commit(TafsilyDeleteEventArgs o)
{
DeleteCommand.Parameters["Index"].Value = o.B_Index;
DeleteCommand.ExecuteNonQuery();
}
}
ممنون اما من نفهمیدم که برنامه خودمو چه شکلی میزونش کنم . کد منو درستش میکنین؟
سلام،
اگه فیلد عددی رو می خوای Update کنی نیابد اون رو داخل '' قرار بدی از این موضوع مطمئن شو بعد اگه باز خطا داد بگو.
اینم نیست . من میگم که اگه تو جدول یه دونهفیلد ور براش update رو اعمال نکنم اینجوری میشه مثلا name رو تو جدول دارم اماتو خط کد up بقیه فیلد رو up میکنم اینو up نمی کنم.!!!!!!!!!!!!
internal class tell_H
{
private System.Data.SqlClient.SqlCommand UpdateCommand, DeleteCommand, InsertCommand;
private System.Data.SqlClient.SqlConnection Connection;
internal tell_H()
{
Connection = SharedDataObjects.GetThreadUnsafeConnection();
UpdateCommand = new System.Data.SqlClient.SqlCommand();
DeleteCommand = new System.Data.SqlClient.SqlCommand();
InsertCommand = new System.Data.SqlClient.SqlCommand();
UpdateCommand.Connection = Connection;
DeleteCommand.Connection = Connection;
InsertCommand.Connection = Connection;
UpdateCommand.CommandType = System.Data.CommandType.Text;
UpdateCommand.Parameters.Add("P_Tell",System.Data. SqlDbType.NVarChar, 0, "Tell");
UpdateCommand.CommandText = "Update [Tell] SET [Name] = @Name, [Family] = @Family, [Tell] = @Tell Where [Tell] = @P_Tell";
UpdateCommand.Parameters.Add("Name",System.Data.Sq lDbType.NVarChar, 0, "Name");
UpdateCommand.Parameters.Add("Family",System.Data. SqlDbType.NVarChar, 0, "Family");
UpdateCommand.Parameters.Add("Tell",System.Data.Sq lDbType.NVarChar, 0, "Tell");
InsertCommand.CommandType = System.Data.CommandType.Text;
InsertCommand.CommandText = "Insert Into [Tell]([Name], [Family], [Tell]) Values (@Name, @Family, @Tell)";
InsertCommand.Parameters.Add("Name",System.Data.Sq lDbType.NVarChar, 0, "Name");
InsertCommand.Parameters.Add("Family",System.Data. SqlDbType.NVarChar, 0, "Family");
InsertCommand.Parameters.Add("Tell",System.Data.Sq lDbType.NVarChar, 0, "Tell");
DeleteCommand.CommandType = System.Data.CommandType.Text;
DeleteCommand.CommandText = "Delete From [Tell] where [Tell] = @Tell";
DeleteCommand.Parameters.Add("Tell",System.Data.Sq lDbType.NVarChar, 0, "Tell");
}
public void Commit(tellEditEventArgs o)
{
UpdateCommand.Parameters["P_Tell"].Value = o.B_Tell;
UpdateCommand.Parameters["Name"].Value = o.Name;
UpdateCommand.Parameters["Family"].Value = o.Family;
UpdateCommand.Parameters["Tell"].Value = o.Tell;
UpdateCommand.ExecuteNonQuery();
}
public void Commit(tellInsertEventArgs o)
{
InsertCommand.Parameters["Name"].Value = o.Name;
InsertCommand.Parameters["Family"].Value = o.Family;
InsertCommand.Parameters["Tell"].Value = o.Tell;
InsertCommand.ExecuteNonQuery();
}
public void Commit(tellDeleteEventArgs o)
{
UpdateCommand.Parameters["Tell"].Value = o.B_Tell;
DeleteCommand.ExecuteNonQuery();
}
}
فکر میکنم از این بیشتر دیگه نمیتونم پیش برم.یک مقدارش رو هم خودتون باید بنویسید.