c#和MySql插入数据错误

本文关键字:数据 错误 插入 MySql | 更新日期: 2023-09-27 18:03:10

我正在开发的应用程序中有一个问题。

I Insert 4 Data fieldlet ("Age", "Gender", "Name", "Tel") in到MySQL数据库。99%的情况下,它会100%工作,然后偶尔我会得到一些奇怪的东西。

第一行将有Age, Gender,"Null","Null",第2行将有"Null","Null",Name, Tel,所以基本上它将插入一行数据到2行。

下面是代码示例:
String constring = ConfigurationManager.ConnectionStrings["server"].ConnectionString;
            string Query = "insert into db.Table (Name , Surname , ID , Tel) 
values('" + this.textBox1.Text + "' , '" + this.textBox2.Text + "'  , 
'" + this.textBox6.Text + "'  , '" + this.textBox4.Text + "');";
            MySqlConnection conDataBase = new MySqlConnection(constring);
            MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
            MySqlDataReader myReader;
            conDataBase.Open();
            try
            {

                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            MessageBox.Show("Cleint Details has been added to system");
        }

如果有人能想到一个原因,请帮助。我确实检查了环境(网络连接等),但这些都很好。

c#和MySql插入数据错误

文本框中可能存在影响插入语句的值。如果使用参数化语句会更好。例如:

string Query = "insert into db.Table (Name , Surname , ID , Tel) values(@param1, @param2 , @param3  , @param4);";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
//Add paramter values
cmdDataBase.Parameters.AddWithValue("@param1", this.textBox1.Text);
cmdDataBase.Parameters.AddWithValue("@param2", this.textBox2.Text);
cmdDataBase.Parameters.AddWithValue("@param3", this.textBox6.Text);
cmdDataBase.Parameters.AddWithValue("@param4", this.textBox4.Text);

我认为Reece的答案将解决您的问题,但我也建议放弃ExecuteReader()while{}循环。而只需使用cmdDataBase.ExecuteNonQuery();来触发insert。