PDA

View Full Version : مواجه شدن با fatal error هنگام update داده در sql



mahsa.sh
دوشنبه 26 تیر 1391, 21:46 عصر
من یک query نوشتم که یک سطر از یک جدول را به روز کنه ولی با fatal error برخورد کردم. علت این خطا چیه؟

mahsa.sh
سه شنبه 27 تیر 1391, 00:01 صبح
من یک query نوشتم که یک سطر از یک جدول را به روز کنه ولی با fatal error برخورد کردم. علت این خطا چیه؟

کسی نمیتونه کمکم کنه؟!

veniz2008
سه شنبه 27 تیر 1391, 00:34 صبح
دوست عزیز کدی رو که نوشتی بذار،فیلدهای جدولت رو هم بگو.

mahsa.sh
سه شنبه 27 تیر 1391, 10:52 صبح
دوست عزیز کدی رو که نوشتی بذار،فیلدهای جدولت رو هم بگو.

این کد مربوط به آپدیت

try
{
string connString1 = "server=localhost ;Database=mydb ;Uid=root ;password=root ";
MySqlConnection conn = new MySqlConnection(connString1);
conn.Open();
MySqlCommand command1 = new MySqlCommand("UPDATE book SET onvan=@o , reshte=@r , muzu=@m , jeld=@j , shabak=@s , nevisande=@n , nashe=@na , zaban= @z ,salenashr=@sal WHERE shomaresabt=@shs ");
command1.Parameters.Add(new MySqlParameter("sh_s", int.Parse(comboBox6.SelectedItem.ToString())));
command1.Connection = conn;
int sh_sabt = int.Parse(comboBox6.SelectedItem.ToString());
string onvan = textBox5.Text;
string reshte = comboBox1.SelectedItem.ToString();
string muzu = comboBox2.SelectedItem.ToString();
int jeld = int.Parse(comboBox3.SelectedItem.ToString());
string shabak = textBox3.Text;
string nevisande = textBox6.Text;
string nasher = textBox4.Text;
string salenashr = textBox2.Text;
string zaban = comboBox4.SelectedItem.ToString();
command1.Parameters.Add(new MySqlParameter("shs", sh_sabt));
command1.Parameters.Add(new MySqlParameter("o", onvan));
command1.Parameters.Add(new MySqlParameter("r", reshte));
command1.Parameters.Add(new MySqlParameter("m", muzu));
command1.Parameters.Add(new MySqlParameter("j", jeld));
command1.Parameters.Add(new MySqlParameter("sh", shabak));
command1.Parameters.Add(new MySqlParameter("n", nevisande));
command1.Parameters.Add(new MySqlParameter("na", nasher));
command1.Parameters.Add(new MySqlParameter("sale", salenashr));
command1.Parameters.Add(new MySqlParameter("z", zaban));
command1.ExecuteNonQuery();

conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Close();

این هم فیلد های جدول


CREATE TABLE IF NOT EXISTS `mydb`.`book` (
`shomaresabt` INT NOT NULL ,
`onvan` VARCHAR(45) NULL ,
`muzu` VARCHAR(45) NULL ,
`reshte` VARCHAR(45) NULL ,
`jeld` INT NULL ,
`shabak` VARCHAR(45) NULL ,
`nevisande` VARCHAR(45) NULL ,
`nasher` VARCHAR(45) NULL ,
`salenashr` VARCHAR(45) NULL ,
`zaban` VARCHAR(45) NULL ,
`vaziyat` INT NULL ,
PRIMARY KEY (`shomaresabt`) ,
INDEX `muzu` (`muzu` ASC) ,
CONSTRAINT `muzu`
FOREIGN KEY (`muzu` )
REFERENCES `mydb`.`muzu` (`muzu` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

veniz2008
سه شنبه 27 تیر 1391, 11:09 صبح
لطفا کدتون رو داخل تگ بذارید.

mahsa.sh
سه شنبه 27 تیر 1391, 11:14 صبح
لطفا کدتون رو داخل تگ بذارید.



try
{
string connString1 = "server=localhost ;Database=mydb ;Uid=root ;password=root ";
MySqlConnection conn = new MySqlConnection(connString1);
conn.Open();
MySqlCommand command1 = new MySqlCommand("UPDATE book SET onvan=@o , reshte=@r , muzu=@m , jeld=@j , shabak=@s , nevisande=@n , nashe=@na , zaban= @z ,salenashr=@sal WHERE shomaresabt=@shs ");
command1.Parameters.Add(new MySqlParameter("sh_s", int.Parse(comboBox6.SelectedItem.ToString())));
command1.Connection = conn;
int sh_sabt = int.Parse(comboBox6.SelectedItem.ToString());
string onvan = textBox5.Text;
string reshte = comboBox1.SelectedItem.ToString();
string muzu = comboBox2.SelectedItem.ToString();
int jeld = int.Parse(comboBox3.SelectedItem.ToString());
string shabak = textBox3.Text;
string nevisande = textBox6.Text;
string nasher = textBox4.Text;
string salenashr = textBox2.Text;
string zaban = comboBox4.SelectedItem.ToString();
command1.Parameters.Add(new MySqlParameter("shs", sh_sabt));
command1.Parameters.Add(new MySqlParameter("o", onvan));
command1.Parameters.Add(new MySqlParameter("r", reshte));
command1.Parameters.Add(new MySqlParameter("m", muzu));
command1.Parameters.Add(new MySqlParameter("j", jeld));
command1.Parameters.Add(new MySqlParameter("sh", shabak));
command1.Parameters.Add(new MySqlParameter("n", nevisande));
command1.Parameters.Add(new MySqlParameter("na", nasher));
command1.Parameters.Add(new MySqlParameter("sale", salenashr));
command1.Parameters.Add(new MySqlParameter("z", zaban));
command1.ExecuteNonQuery();

conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Close();

veniz2008
سه شنبه 27 تیر 1391, 11:31 صبح
اینطوری بنویسید:

string connString1 = "server=localhost ;Database=mydb ;Uid=root ;password=root "; SqlConnection conn = new SqlConnection(connString1);
SqlCommand command1 = new SqlCommand("UPDATE book SET onvan=@o , reshte=@r , muzu=@m , jeld=@j , shabak=@s , nevisande=@n , nashe=@na , zaban= @z ,salenashr=@sal WHERE shomaresabt=@shs ",conn);
int sh_sabt = int.Parse(comboBox6.SelectedValue.ToString());
string onvan = textBox5.Text;
string reshte = comboBox1.SelectedValue.ToString();
string muzu = comboBox2.SelectedValue.ToString();
int jeld = int.Parse(comboBox3.SelectedValue.ToString());
string shabak = textBox3.Text;
string nevisande = textBox6.Text;
string nasher = textBox4.Text;
string salenashr = textBox2.Text;
string zaban = comboBox4.SelectedValue.ToString();
command1.Parameters.AddWithValue("@shs", sh_sabt);
command1.Parameters.AddWithValue("@o", onvan);
command1.Parameters.AddWithValue("@r", reshte);
command1.Parameters.AddWithValue("@m", muzu);
command1.Parameters.AddWithValue("@j", jeld);
command1.Parameters.AddWithValue("@sh", shabak);
command1.Parameters.AddWithValue("@n", nevisande);
command1.Parameters.AddWithValue("@na", nasher);
command1.Parameters.AddWithValue("@sale", salenashr);
command1.Parameters.AddWithValue("@z", zaban);
conn.Open();
command1.ExecuteNonQuery();
conn.Close();

Nima_kyan
سه شنبه 27 تیر 1391, 11:32 صبح
سلام


فك كنم شما اگه قبل از اسم پارامترهاتون @ رو اضافه كنيد مشكلتون حل شه.
command1.Parameters.Add(newMySqlParameter("@shs", sh_sabt));

mahsa.sh
سه شنبه 27 تیر 1391, 12:09 عصر
اینطوری بنویسید:

string connString1 = "server=localhost ;Database=mydb ;Uid=root ;password=root "; SqlConnection conn = new SqlConnection(connString1);
SqlCommand command1 = new SqlCommand("UPDATE book SET onvan=@o , reshte=@r , muzu=@m , jeld=@j , shabak=@s , nevisande=@n , nashe=@na , zaban= @z ,salenashr=@sal WHERE shomaresabt=@shs ",conn);
int sh_sabt = int.Parse(comboBox6.SelectedValue.ToString());
string onvan = textBox5.Text;
string reshte = comboBox1.SelectedValue.ToString();
string muzu = comboBox2.SelectedValue.ToString();
int jeld = int.Parse(comboBox3.SelectedValue.ToString());
string shabak = textBox3.Text;
string nevisande = textBox6.Text;
string nasher = textBox4.Text;
string salenashr = textBox2.Text;
string zaban = comboBox4.SelectedValue.ToString();
command1.Parameters.AddWithValue("@shs", sh_sabt);
command1.Parameters.AddWithValue("@o", onvan);
command1.Parameters.AddWithValue("@r", reshte);
command1.Parameters.AddWithValue("@m", muzu);
command1.Parameters.AddWithValue("@j", jeld);
command1.Parameters.AddWithValue("@sh", shabak);
command1.Parameters.AddWithValue("@n", nevisande);
command1.Parameters.AddWithValue("@na", nasher);
command1.Parameters.AddWithValue("@sale", salenashr);
command1.Parameters.AddWithValue("@z", zaban);
conn.Open();
command1.ExecuteNonQuery();
conn.Close();


این خطا را می دهد.
{"Object reference not set to an instance of an object."}

mahsa.sh
سه شنبه 27 تیر 1391, 13:19 عصر
فکر کنم مقادیر کمبوها null هست و انتخابی صورت نگرفته. از convert.tostring استفاده کنید

به کد برنامه نگاه کنید. من همه جا از convert استفاده کردم. حتی اگر null هم باشه ، باید مقادیر رو null کنه نه اینکه exception بده.
میشه بگید این exception ای که داده یعنی چی؟

veniz2008
سه شنبه 27 تیر 1391, 16:35 عصر
هر جایی که کمبوباکس دارید به اینصورت تغییر بدید ببینید جواب میده یا نه( در واقع به جای selectedItem و selectedValue از خاصیت Text کمبوباکس استفاده کنید):

comboBox1.Text

mahsa.sh
سه شنبه 27 تیر 1391, 19:46 عصر
هر جایی که کمبوباکس دارید به اینصورت تغییر بدید ببینید جواب میده یا نه( در واقع به جای selectedItem و selectedValue از خاصیت Text کمبوباکس استفاده کنید):

comboBox1.Text

باز هم نشد

فکر نمی کنم مشکل در خواندن مقادیر باشه ، چون تریز که می کنم ، همه متغییر ها مقدار دارند.

mahsa.sh
سه شنبه 27 تیر 1391, 19:54 عصر
چون بعد از انتخاب از کمبو میخواهید کوئری رو اجرا کنید میتونید از مطلب آقای mohammaddou (http://barnamenevis.org/member.php?155296-mohammaddou) (پست قبلی) استفاده کنید.

درضمن منظورم به این صورت بود:
int sh_sabt = int.Parse(Convert.ToString(comboBox6.SelectedValue ));
//...
string reshte = Convert.ToString(comboBox1.SelectedValue);
string muzu = Convert.ToString(comboBox2.SelectedValue);
int jeld = int.Parse(Convert.ToString(comboBox3.SelectedValue ));
//...
string zaban = Convert.ToString(comboBox4.SelectedValue);
من مشابه این کار رو برای دستور insert انجام داده ، بدون مشکل اجرا شد.
بنابراین نباید مشکل در نحوه خواندن متغییر ها باشه

mahsa.sh
سه شنبه 27 تیر 1391, 20:40 عصر
دقیقا روی چه خطی خطا میده. اگر نمیدونید ، کد رو بین try catch قرار بدید و ببینید متن exception چی میگه.
fatal error encountered during command execution

mahsa.sh
چهارشنبه 28 تیر 1391, 09:26 صبح
fatal error encountered during command execution

یعنی هیچ راهی نداره که این کد درست بشه؟؟؟؟