PDA

View Full Version : ارور در updte اطلاعات . این ارور چیه؟



RIG000
شنبه 10 اردیبهشت 1390, 00:04 صبح
69321
دوستا گل این ارور چیه؟

FastCode
شنبه 10 اردیبهشت 1390, 13:43 عصر
۱. کدتون مشکل بنیادی داره.(باید از SqlParameter استفاده کنید.)
۲.دقیقاْ همون چند کاراکتری که مشکل داره توی تصویر نیست.
خطا میگه که:آرایتون از مکانی که میخواهید بهش دسترسی پیدا کنید کوتاه تره.

RIG000
یک شنبه 11 اردیبهشت 1390, 15:22 عصر
این کد 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 کنیم. من مجبورم همه ی فیلد های جلدو بررسی کنم.

aliasghar2
یک شنبه 11 اردیبهشت 1390, 17:10 عصر
سلام دوست عزیز
اروری که داده formatexceptin هست و این ارور وقتی رخ میده که داده ها با هم از لحاظ نوع فرق داشته باشند مثلا توی یه فیلد عددی مقادیر رشته ای بریزی

RIG000
یک شنبه 11 اردیبهشت 1390, 17:29 عصر
سلام دوست عزیز
اروری که داده formatexceptin هست و این ارور وقتی رخ میده که داده ها با هم از لحاظ نوع فرق داشته باشند مثلا توی یه فیلد عددی مقادیر رشته ای بریزی امتحان کردم ربطی نداشت!!!!

IFA_USER
یک شنبه 11 اردیبهشت 1390, 18:49 عصر
امتحان کردم ربطی نداشت!!!!

درسته ربطی نداره
Aliasghar2 درست میگه از SqlParameter استفاده کنی بهتره اما می تونی
مستقیم هم مقادیر رو قرار بدی


یه نگاهی به http://www.codeproject.com/KB/database/simpledbreadwrite.aspx
بنداز

RIG000
یک شنبه 11 اردیبهشت 1390, 19:10 عصر
اخه مستقیم که همونه که خودم استفاده کردم که جواب نمیده .

RIG000
یک شنبه 11 اردیبهشت 1390, 19:15 عصر
پارامتری رو چه شکلی استفاده کنم ؟

FastCode
یک شنبه 11 اردیبهشت 1390, 20:20 عصر
پارامتری رو چه شکلی استفاده کنم ؟
سلام.
این یک نمونه کد بدون 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.SqlDbType.BigInt, 0, "Moin");
InsertCommand.CommandType = System.Data.CommandType.Text;
InsertCommand.CommandText = "Insert Into Tafsily([Moin]) Values (@Moin)";
InsertCommand.Parameters.Add("Moin",System.Data.SqlDbType.BigInt, 0, "Moin");
DeleteCommand.CommandType = System.Data.CommandType.Text;
DeleteCommand.CommandText = "Delete From Tafsily where [Index] = @Index";
DeleteCommand.Parameters.Add("Index",System.Data.SqlDbType.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();
}
}

RIG000
دوشنبه 12 اردیبهشت 1390, 01:12 صبح
ممنون اما من نفهمیدم که برنامه خودمو چه شکلی میزونش کنم . کد منو درستش میکنین؟

tooraj_azizi_1035
دوشنبه 12 اردیبهشت 1390, 10:13 صبح
سلام،
اگه فیلد عددی رو می خوای Update کنی نیابد اون رو داخل '' قرار بدی از این موضوع مطمئن شو بعد اگه باز خطا داد بگو.

RIG000
دوشنبه 12 اردیبهشت 1390, 12:14 عصر
اینم نیست . من میگم که اگه تو جدول یه دونهفیلد ور براش update رو اعمال نکنم اینجوری میشه مثلا name رو تو جدول دارم اماتو خط کد up بقیه فیلد رو up میکنم اینو up نمی کنم.!!!!!!!!!!!!

FastCode
دوشنبه 12 اردیبهشت 1390, 16:05 عصر
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.SqlDbType.NVarChar, 0, "Name");
UpdateCommand.Parameters.Add("Family",System.Data.SqlDbType.NVarChar, 0, "Family");
UpdateCommand.Parameters.Add("Tell",System.Data.SqlDbType.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.SqlDbType.NVarChar, 0, "Name");
InsertCommand.Parameters.Add("Family",System.Data.SqlDbType.NVarChar, 0, "Family");
InsertCommand.Parameters.Add("Tell",System.Data.SqlDbType.NVarChar, 0, "Tell");

DeleteCommand.CommandType = System.Data.CommandType.Text;
DeleteCommand.CommandText = "Delete From [Tell] where [Tell] = @Tell";
DeleteCommand.Parameters.Add("Tell",System.Data.SqlDbType.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();
}
}
فکر میکنم از این بیشتر دیگه نمیتونم پیش برم.یک مقدارش رو هم خودتون باید بنویسید.