C#和MySql插入数据错误
我正在开发的应用程序中有一个问题 我在MySQL数据库中插入了4个数据字段,分别称它们为(C#和MySql插入数据错误,c#,mysql,C#,Mysql,我正在开发的应用程序中有一个问题 我在MySQL数据库中插入了4个数据字段,分别称它们为(“年龄”,“性别”,“姓名”,“电话”)。99%的时候它会100%工作,然后偶尔我会得到一些奇怪的东西 第1行将有年龄、性别、“Null”、“Null”,第2行将有“Null”、“Null”、姓名、电话,因此基本上它将在2行中插入一行数据 下面是代码示例: String constring = ConfigurationManager.ConnectionStrings["server"].Connecti
“年龄”
,“性别”
,“姓名”
,“电话”
)。99%的时候它会100%工作,然后偶尔我会得到一些奇怪的东西
第1行将有年龄、性别、“Null”、“Null”,第2行将有“Null”、“Null”、姓名、电话,因此基本上它将在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");
}
如果有人能想出这样做的原因,请帮助。我确实检查了环境(网络连接等),但这些都没有问题。文本框中的值可能会影响insert语句。如果使用参数化语句会更好。例如:
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()
触发插入。当您遇到此问题时,您的数据是否包含引号或任何可能“错误”破坏SQL语句的内容?根据您所述,将提交两个查询。您的代码仅显示如何提交单个查询。我建议你看看是什么触发了你的方法。我还要检查你的代码是否有事件被抛出,这样在特定情况下,多个不完整数据的调用可能会被发送两次。您好,感谢您的反馈,这解决了问题,而且它不仅向我展示了用户是如何使错误发生的,如果一个人的名字像“Mike De'Le”sql命令将在“”处停止,然后爆炸并出错。这就解决了问题,谢谢大家:)