插入到C#与的SqlCommandSqlCommand

2023-09-03 04:28:15 作者:軟肋

可能重复:   列表框和数据库问题

什么是将数据插入到数据库中的最好方法是什么?

这是我有什么,但它是错误的。

  cmd.CommandText =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);

cmd.Parameters.Add(新的SqlParameter(@参数1,klantId));
cmd.Parameters.Add(新的SqlParameter(@参数2,klantNaam));
cmd.Parameters.Add(新的SqlParameter(@参数3,klantVoornaam));
 

该功能将数据添加到列表框中

怎么用c 向VS2013自带的SQL Server2012中写入数据

http://www.pictourl.com/viewer/37e4edcf

而不是到数据库中。

http://www.pictourl.com/viewer/4d5721fc

全功能:

 私人无效Form1_Load的(对象发件人,EventArgs的)
    {
        CONN2 =新的SqlConnection();
        conn2.ConnectionString = ConfigurationManager.ConnectionStrings [connSpionshopString]的ConnectionString。
    }

 私人无效button2_Click(对象发件人,EventArgs的)
    {
        字符串SQLCMD =SELECT NAAM,voornaam,klant_id从klant;;
        的SqlCommand CMD =新的SqlCommand(SQLCMD,CONN2);

        conn2.Open();

        使用(SqlDataReader的读卡器= cmd.ExecuteReader())
        {
           而(reader.Read())
            {
                listBox2.Items.Add(reader.GetString(0)++ reader.GetString(1)+(+ reader.GetInt16(2)+));
            }
        }

        conn2.Close();
    }



私人无效button4_Click(对象发件人,EventArgs的)
    {
        INT klantId = Convert.ToInt32(textBox1.Text);
        字符串klantNaam = textBox2.Text;
        字符串klantVoornaam = textBox3.Text;

        conn2.Open();

        的SqlCommand CMD =新的SqlCommand();
        cmd.Connection = CONN2;
        cmd.CommandText =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);

        cmd.Parameters.AddWithValue(@参数1,klantId);
        cmd.Parameters.AddWithValue(@参数2,klantNaam);
        cmd.Parameters.AddWithValue(@参数3,klantVoornaam);

        cmd.ExecuteNonQuery();

        conn2.Close();
    }
 

解决方案

尝试确认的数据类型(的SqlDbType )的数据库中的每个参数,这样来做;

 使用(SqlConnection的连接=新的SqlConnection(ConfigurationManager.ConnectionStrings [connSpionshopString。的ConnectionString))
{
    connection.Open();
    字符串SQL =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);
        的SqlCommand CMD =新的SqlCommand(SQL,连接);
        cmd.Parameters.Add(@参数1,SqlDbType.Int)。价值= klantId
        cmd.Parameters.Add(@参数2,SqlDbType.Varchar,50)。价值= klantNaam;
        cmd.Parameters.Add(@参数3,SqlDbType.Varchar,50)。价值= klantVoornaam;
        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
}
 

Possible Duplicate: ListBox and Database issue

What's the best way to INSERT data into a database?

This is what I have but it's wrong..

cmd.CommandText = "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";

cmd.Parameters.Add(new SqlParameter("@param1", klantId));
cmd.Parameters.Add(new SqlParameter("@param2", klantNaam));
cmd.Parameters.Add(new SqlParameter("@param3", klantVoornaam));

The function add data into the listBox

http://www.pictourl.com/viewer/37e4edcf

but not into the database..

http://www.pictourl.com/viewer/4d5721fc

The full function:

private void Form1_Load(object sender, EventArgs e)
    {            
        conn2 = new SqlConnection();
        conn2.ConnectionString = ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString;
    }

 private void button2_Click(object sender, EventArgs e)
    {         
        string sqlCmd = "SELECT naam,voornaam,klant_id FROM klant;";
        SqlCommand cmd = new SqlCommand(sqlCmd, conn2);

        conn2.Open();

        using(SqlDataReader reader = cmd.ExecuteReader())
        {
           while (reader.Read())
            {
                listBox2.Items.Add(reader.GetString(0) + " " + reader.GetString(1) + "  (" + reader.GetInt16(2) + ")");
            }  
        }

        conn2.Close();
    }



private void button4_Click(object sender, EventArgs e)
    {
        int klantId = Convert.ToInt32(textBox1.Text);
        string klantNaam = textBox2.Text;
        string klantVoornaam = textBox3.Text;

        conn2.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn2;
        cmd.CommandText = "INSERT INTO klant(klant_id, naam, voornaam)   VALUES(@param1,@param2,@param3)";

        cmd.Parameters.AddWithValue("@param1", klantId);
        cmd.Parameters.AddWithValue("@param2", klantNaam);
        cmd.Parameters.AddWithValue("@param3", klantVoornaam);

        cmd.ExecuteNonQuery(); 

        conn2.Close();
    }

解决方案

Try confirm the data type (SqlDbType) for each parameter in the database and do it this way;

using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString))
{
    connection.Open();
    string sql =  "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";
        SqlCommand cmd = new SqlCommand(sql,connection);
        cmd.Parameters.Add("@param1", SqlDbType.Int).value = klantId  
        cmd.Parameters.Add("@param2", SqlDbType.Varchar, 50).value = klantNaam;
        cmd.Parameters.Add("@param3", SqlDbType.Varchar, 50).value = klantVoornaam;
        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
}