Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和MySql插入数据错误_C#_Mysql - Fatal编程技术网

C#和MySql插入数据错误

C#和MySql插入数据错误,c#,mysql,C#,Mysql,我正在开发的应用程序中有一个问题 我在MySQL数据库中插入了4个数据字段,分别称它们为(“年龄”,“性别”,“姓名”,“电话”)。99%的时候它会100%工作,然后偶尔我会得到一些奇怪的东西 第1行将有年龄、性别、“Null”、“Null”,第2行将有“Null”、“Null”、姓名、电话,因此基本上它将在2行中插入一行数据 下面是代码示例: String constring = ConfigurationManager.ConnectionStrings["server"].Connecti

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

我在MySQL数据库中插入了4个数据字段,分别称它们为(
“年龄”
“性别”
“姓名”
“电话”
)。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命令将在“”处停止,然后爆炸并出错。这就解决了问题,谢谢大家:)