没有正确输入参数列 [英] Doesnt input correctly into parameters columns

查看:56
本文介绍了没有正确输入参数列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我想从datagridview插入MYSQl数据库,它会注入不同的列而不是正确的coulums



代码看起来像这样:



 private void confirmAppointmentToolStripMenuItem_Click(object sender,EventArgs e)
{
string constring = ConfigurationManager.ConnectionStrings [MySQLDatabaseConnection]。ConnectionString;
using(MySqlConnection con = new MySqlConnection(constring))
{
con.Open();
string sql =insert into vms_db.final_appointments(visit_date,visitor_name,signin_time,vehicle_number,organization,visit_type,reason,id_type,person_visit,img)values(@ visit_date,@ visitor_name,@ signin_time,@ vehicle_number,@ organization ,@ visit_type,@原因,@ ID_TYPE,@ person_visit,@ IMG);

使用(MySqlCommand cmd = new MySqlCommand(sql,con))
{
try
{
for(int i = 0; i< dataGridView1.Rows.Count - 1; i ++)
{
cmd.Parameters.AddWithValue(@ visit_date,System.DateTime.Now);
cmd.Parameters.AddWithValue(@ visitor_name,dataGridView1.Rows [i] .Cells [2] .Value);
cmd.Parameters.AddWithValue(@ visit_address,dataGridView1.Rows [i] .Cells [3] .Value);
cmd.Parameters.AddWithValue(@ visit_city,dataGridView1.Rows [i] .Cells [4] .Value);
cmd.Parameters.AddWithValue(@ signin_time,dataGridView1.Rows [i] .Cells [5] .Value);
cmd.Parameters.AddWithValue(@ vehicle_number,dataGridView1.Rows [i] .Cells [6] .Value);
cmd.Parameters.AddWithValue(@ organization,dataGridView1.Rows [i] .Cells [7] .Value);
cmd.Parameters.AddWithValue(@ visit_type,dataGridView1.Rows [i] .Cells [8] .Value);
cmd.Parameters.AddWithValue(@ reason,dataGridView1.Rows [i] .Cells [9] .Value);
cmd.Parameters.AddWithValue(@ id_type,dataGridView1.Rows [i] .Cells [10] .Value);
cmd.Parameters.AddWithValue(@ person_visit,dataGridView1.Rows [i] .Cells [11] .Value);
cmd.Parameters.AddWithValue(@ img,dataGridView1.Rows [i] .Cells [12] .Value);
cmd.ExecuteNonQuery();
MessageBox.Show(最终约会保留,你可以退出窗口,通知,MessageBoxButtons.OK,MessageBoxIcon.Information);
关闭();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}





我错过了什么,我的数据库列表看起来像这样



 id | visit_date | visitor_name | visit_address | visit_city | signin_time | vehicle_number |组织| visit_type |原因| id_type | person_visit | img | signout_time 





我尝试过:



 cmd.Parameters.AddWithValue(@ visitor_name,dataGridView1.Rows [i] .Cells [visitor_name]。Value); 
cmd.Parameters.AddWithValue(@ visit_address,dataGridView1.Rows [i] .Cells [visit_address]。Value);

解决方案

在MySQL中,您需要按照与S​​QL语句中出现的相应字段相同的顺序添加参数。



他们在数据库中定义的顺序并不重要。



此外,请注意Richard Deeming指出:你需要清除每个循环上的参数集合:



 cmd.Parameters.Clear 


If i want to insert from datagridview into MYSQl Database, it injects into different columns instead of the correct coulums

Code looks like this :

private void confirmAppointmentToolStripMenuItem_Click(object sender, EventArgs e)
{
    string constring = ConfigurationManager.ConnectionStrings["MySQLDatabaseConnection"].ConnectionString;
    using (MySqlConnection con = new MySqlConnection(constring))
    {
        con.Open();
        string sql = "insert into vms_db.final_appointments(visit_date,visitor_name,signin_time,vehicle_number,organization,visit_type,reason,id_type,person_visit,img) values (@visit_date,@visitor_name,@signin_time,@vehicle_number,@organization,@visit_type,@reason,@id_type,@person_visit,@img)";

        using (MySqlCommand cmd = new MySqlCommand(sql, con))
        {
            try
            {
                for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    cmd.Parameters.AddWithValue("@visit_date", System.DateTime.Now);
                    cmd.Parameters.AddWithValue("@visitor_name", dataGridView1.Rows[i].Cells[2].Value);
                    cmd.Parameters.AddWithValue("@visit_address", dataGridView1.Rows[i].Cells[3].Value);
                    cmd.Parameters.AddWithValue("@visit_city", dataGridView1.Rows[i].Cells[4].Value);
                    cmd.Parameters.AddWithValue("@signin_time", dataGridView1.Rows[i].Cells[5].Value);
                    cmd.Parameters.AddWithValue("@vehicle_number", dataGridView1.Rows[i].Cells[6].Value);
                    cmd.Parameters.AddWithValue("@organization", dataGridView1.Rows[i].Cells[7].Value);
                    cmd.Parameters.AddWithValue("@visit_type", dataGridView1.Rows[i].Cells[8].Value);
                    cmd.Parameters.AddWithValue("@reason", dataGridView1.Rows[i].Cells[9].Value);
                    cmd.Parameters.AddWithValue("@id_type", dataGridView1.Rows[i].Cells[10].Value);
                    cmd.Parameters.AddWithValue("@person_visit", dataGridView1.Rows[i].Cells[11].Value);
                    cmd.Parameters.AddWithValue("@img", dataGridView1.Rows[i].Cells[12].Value);
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Final Appointments Reserved, You may Exit Window", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Close();
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}



Am i missing something , My database column tables looks like this

id | visit_date | visitor_name | visit_address | visit_city | signin_time | vehicle_number | organization | visit_type | reason | id_type | person_visit | img | signout_time



What I have tried:

cmd.Parameters.AddWithValue("@visitor_name", dataGridView1.Rows[i].Cells["visitor_name"].Value);
                 cmd.Parameters.AddWithValue("@visit_address", dataGridView1.Rows[i].Cells["visit_address"].Value);

解决方案

In MySQL you need to add the parameters in the same order as their corresponding fields appear in the SQL statement.

The order they are defined in the database is not important.

Also, take note of the point make by Richard Deeming: you need to clear the parameter collection on each loop:

cmd.Parameters.Clear


这篇关于没有正确输入参数列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆