我已经将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创建的。
替换
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);
字符串类型括在单引号内。
试试这个:
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());
}
}