C# 在c.net mysql中执行命令时遇到致命错误

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

我尝试了下面的代码,当我要点击Save按钮时,我得到了在命令执行过程中遇到的致命错误,我重新检查了两次以上,但不幸的是错误没有消失。请,任何人都请修复此错误

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命令分开,这样会更好。