我已将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创建本地数据库。
答案 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());
}
}