事件处理程序将值插入表中

时间:2014-02-28 11:39:03

标签: c# mysql visual-studio-2008

我已将sql server创建的本地数据库与visual studio(C#)中的项目连接起来。现在,我希望用户将文本字段中给出的数据输入到我的数据库中。这是我试图做的事情

    private void Button_AddCustomer_Click(object sender, EventArgs e)
    {
         try
         {
             //SqlConnection objsqlconn = new SqlConnection(conn);
             SqlConnection myConnection = new SqlConnection("Data Source=SHIRWANIPC;" + 
"Initial Catalog=TEST DATABASE;" + "Integrated Security=True");
             myConnection.Open();
             SqlCommand objcmd = new SqlCommand("INSERT INTO 
Customer(PhoneNumber,MobileNumber,Address) VALUES (a, b, c)", myConnection);
             objcmd.ExecuteNonQuery();
         }
         catch(SqlException ex)
         {
              MessageBox.Show(ex.ToString());
         }
     }

它抛出一个例外invalid column name a,invalid column name b,invalid column name c。问题是什么,如何使用插入查询从用户输入数据库?我正在使用visual studio C#,并使用ms sql创建本地数据库。

2 个答案:

答案 0 :(得分:0)

替换

VALUES (a, b, c)

VALUES (' + textBox1.value + (other text area) + ')'

无论如何检查查询前的输入!

确定

SqlCommand objcmd = new SqlCommand("INSERT INTO Customer(PhoneNumber,MobileNumber,Address) VALUES ('" + PhoneNumber.Text + "', '" + MobileNumber.Text + "', '" + Address.Text + "')", myConnection); 

答案 1 :(得分:0)

您需要在单引号中包含字符串类型。

试试这个:

INSERT INTO Customer(PhoneNumber,MobileNumber,Address) VALUES ('a','b','c')

建议:您的查询向sql injection attacks开放,请使用Parameterised queries来避免这些问题。

试一试:使用参数化查询

    private void Button_AddCustomer_Click(object sender, EventArgs e)
    {
         try
         {
             //SqlConnection objsqlconn = new SqlConnection(conn);
             SqlConnection myConnection = new SqlConnection(
             "Data Source=SHIRWANIPC;" + "Initial Catalog=TEST DATABASE;"
                                            + "Integrated Security=True");
             myConnection.Open();
             SqlCommand objcmd = new SqlCommand("INSERT INTO 
                   Customer(PhoneNumber,MobileNumber,Address) VALUES   
                  (@phonenumber,@mobilenumber,@address)", myConnection);
            objcmd.Parameters.AddWithValue("@phonenumber",TextBox1.Text);
            objcmd.Parameters.AddWithValue("@mobilenumber",TextBox2.Text);
            objcmd.Parameters.AddWithValue("@address",TextBox3.Text);
            objcmd.ExecuteNonQuery();
         }
         catch(SqlException ex)
         {
              MessageBox.Show(ex.ToString());
         }
     }