C# 在c.net mysql中执行命令时遇到致命错误
我尝试了下面的代码,当我要点击Save按钮时,我得到了在命令执行过程中遇到的致命错误,我重新检查了两次以上,但不幸的是错误没有消失。请,任何人都请修复此错误C# 在c.net mysql中执行命令时遇到致命错误,c#,C#,我尝试了下面的代码,当我要点击Save按钮时,我得到了在命令执行过程中遇到的致命错误,我重新检查了两次以上,但不幸的是错误没有消失。请,任何人都请修复此错误 private void button1_Click(object sender, EventArgs e) { string cid, lname, fname,street,city,state,phone,date,email,aco,actype,des,bal; c
private void button1_Click(object sender, EventArgs e)
{
string cid, lname, fname,street,city,state,phone,date,email,aco,actype,des,bal;
cid = label14.Text;
lname = textBox1.Text;
fname = textBox2.Text;
street = textBox3.Text;
city = textBox4.Text;
state = textBox5.Text;
phone = textBox6.Text;
date = dateTimePicker1.Text;
email = textBox8.Text;
aco = textBox7.Text;
actype = comboBox1.Text;
des = textBox10.Text;
bal = textBox11.Text;
con.Open();
MySqlCommand cmd = con.CreateCommand();
MySqlTransaction transaction;
transaction = con.BeginTransaction();
StringBuilder cmdText = new StringBuilder();
cmdText.AppendLine("INSERT into customer (custid,lastname,firstname,street,city,state,phone,date,email) VALUES (@custid,@lastname,@firstname,@street,@city,@state,@phone,@date,@email)");
cmdText.AppendLine("INSERT into account(accid,custid,acctype,description,balance) VALUES (@accid,@custoid,@acctype,@description,@balance)");
cmd.CommandText = cmdText.ToString();
cmd.Connection = con;
cmd.Transaction = transaction;
cmd.Parameters.AddWithValue("@custid", cid);
cmd.Parameters.AddWithValue("@lastname", lname);
cmd.Parameters.AddWithValue("@firstname", fname);
cmd.Parameters.AddWithValue("@street", street);
cmd.Parameters.AddWithValue("@city", city);
cmd.Parameters.AddWithValue("@state", state);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@accid", aco);
cmd.Parameters.AddWithValue("@cusotid", cid);
cmd.Parameters.AddWithValue("@acctype", actype);
cmd.Parameters.AddWithValue("@description", des);
cmd.Parameters.AddWithValue("@balance", bal);
try
{
cmd.ExecuteNonQuery();
transaction.Commit();
MessageBox.Show("Transaction Suceess");
}
catch (Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
我见过许多开发人员在SQL中遇到错误,因为他们在SqlCommand中使用AddWithValue。问题是命令不知道sql命令参数的数据类型 应使用指定参数的数据类型。有关SqlDbType枚举的信息,请参阅 用法:
cmd.Parameters.Add("@custid", SqlDbType.Int).Value = cid;
cmd.Parameters.Add("@lastname", SqlDbType.Text).Value = lname;
另外,我假设您的SQL连接字符串没有问题。有什么异常?而不是MessageBox.Showex.MessageBox.Showex.ToString或调试它,并共享stack trace.cmd.Parameters。AddWithValue@custid,MySqlDbType.Int32.Value=cid;cmd.Parameters。AddWithValue@lastname,MySqlDbType.Text.Value=lname;cmd.Parameters。AddWithValue@firstname,MySqlDbType.Text.Value=fname;但是agian我得到了一个错误输入字符串,它不是当前的吗format@PrabigaDuraisamy在@custid上尝试SqlDbType.String。我还建议使用单独的SqlCommands插入到customer和account表中。@PrabigaDuraisamy您能检查一下参数名吗?我注意到在insert语句中使用@custoid,但在参数中设置了cusotid。将这些sql命令分开,这样会更好。