Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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# 如何使用c将数据添加到mysql中的指定列中#_C#_Mysql_Sql - Fatal编程技术网

C# 如何使用c将数据添加到mysql中的指定列中#

C# 如何使用c将数据添加到mysql中的指定列中#,c#,mysql,sql,C#,Mysql,Sql,如何使用c#按钮将数据添加到mysql数据库表中的指定列单击,单击按钮后,它将传递给catch 这是我的添加按钮代码 private void Button_add_Click(object sender, RoutedEventArgs e) { try { string Query = @"INSERT INTO `bcasdb`.`tbl_department`( `dep_id`,

如何使用c#按钮将数据添加到mysql数据库表中的指定列单击,单击按钮后,它将传递给catch

这是我的添加按钮代码

 private void Button_add_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            string Query = @"INSERT INTO `bcasdb`.`tbl_department`(
                `dep_id`,
                `dep_name`,
                `tbl_branch_branch_id`) 
        VALUES (" 
               + this.depIDInput.Text + ",'" 
               + this.depnameInput.Text + "','" 
               + this.dep_branchIDInput.Text + "')";
            //This is command class which will handle the query and connection object.
            MySqlConnection conn = new MySqlConnection(BCASApp.DataModel.DB_CON.connection);
            MySqlCommand cmd = new MySqlCommand(Query, conn);
            MySqlDataReader MyReader;
            conn.Open();
            MyReader = cmd.ExecuteReader();// Here our query will be executed and data saved into the database.           
            conn.Close();
            successmsgBox();
        }
        catch (Exception)
        {
            errormsgBox();
        }
    }
这是表中的所有列

INSERT INTO `bcasdb`.`tbl_student`
(`reg_id`,
`std_fname`,
`std_lname`,
`tbl_batch_batch_id`,
`gender`,
`dob`,
`email`,
`mobile`,
`contact_address`,
`home_address`,
`status`,
`course_id`,
`depart_id`,
`parent_name`,
`telephone`,
`nationality`,
`nic`,
`passport_no`,
`acadamic_qulification`,
`current_employement`,
`gce_ol`,
`gce_al`,
`birth_certifiacte`,
`copy_of_nic`,
`police_clerence`,
`tbl_studentcol`)
VALUES

我认为您的代码应该重写如下:

    private void Button_add_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            string Query = @"INSERT INTO `bcasdb`.`tbl_department`(
            `dep_id`,
            `dep_name`,
            `tbl_branch_branch_id`) 
            VALUES (@depId, @depName, @branchId)";
            //This is command class which will handle the query and connection object.
            using (MySqlConnection conn = new MySqlConnection(BCASApp.DataModel.DB_CON.connection))
            {
                conn.Open();
                using (MySqlCommand cmd = new MySqlCommand(Query, conn))
                {
                    cmd.Parameters.Add("@depId", this.depIDInput.Text);
                    cmd.Parameters.Add("@dep_name", this.depnameInput.Text);
                    cmd.Parameters.Add("@branchId", this.dep_branchIDInput.Text);

                    cmd.ExecuteNonQuery();
                }
            }

            successmsgBox();
        }
        catch (Exception)
        {
            errormsgBox();
        }
    }

您会遇到什么异常?您的表有多个列,如果所有列都设置为NOTNULL,则需要向表结构传递所有值或设置默认值。您正在插入正确的with if列,但表需要所有not null值。因此,您会收到错误消息-我想这可能是一个原因,因为您没有在问题中显示错误消息。我怀疑您可能需要
cmd.ExecuteNonQuery()您应该始终使用。这种类型的字符串连接对攻击是开放的。由于
INSERT
语句不返回任何数据,所以在这里使用
ExecuteReader
是没有意义的。看起来您只需要
ExecuteNonQuery
。和用于处理数据库连接。要获得正确答案,您需要告诉我们异常处理程序捕获的错误消息是什么(以及内部异常消息,如果有),好的,但为什么要执行Calar?正确的方法是返回行数的ExecuteOnQueryadded@Steve你可能是对的。在这种情况下,ExecuteOnQuery更好。我将修改答案。但这会出现一些错误,但这一次给了我解决问题的好主意,请参阅我的答案