我的应用程序中存在问题,我正在开发。
我插入4个数据字段让我们将它们("Age"
,"Gender"
,"Name"
,"Tel"
)称为MySQL数据库。 99%的时间它将100%工作然后偶尔我会得到一些奇怪的东西。
第1行将包含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");
}
如果有人能想到这个原因,请帮忙。我确实检查了环境(网络连接等),但这些都很好。
答案 0 :(得分:2)
文本框中可能存在影响insert语句的值。如果使用参数化语句会更好。 E.g:
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);
答案 1 :(得分:0)
我认为Reece的答案将解决您的问题,但我也建议放弃ExecuteReader()
和while{}
循环。而只需使用cmdDataBase.ExecuteNonQuery();
来触发插入。