我的代码出现问题。我没有在任何时候使用过SQL服务,所以找出问题是有点棘手的。主要问题是它在标题上的内容,当我尝试Read
中的Update
,Delete
或SQL database
数据时,我得到的语法不正确。
以下是代码:
string Connection2 = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\AuthMyRegistery\AuthMyRegistery\Data.mdf;Integrated Security=True;User Instance=True";
string Query = "delete from * where idWorkerInfo='" + this.WorkerIdTextBox.Text + "';";
SqlConnection Conn2 = new SqlConnection(Connection2);
SqlCommand Command2 = new SqlCommand(Query, Conn2);
SqlDataReader Reader2;
Conn2.Open();
Reader2 = Command2.ExecuteReader();
MessageBox.Show("Data Deleted");
while (Reader2.Read())
{
}
Conn2.Close();
答案 0 :(得分:5)
问题在这里,没有定义表名
delete from * where idWorkerInfo=
应该是
Delete From TableName where idWorkerInfo=
答案 1 :(得分:3)
'*'不是删除语句的有效目标,您要从哪个表中删除?
语法应该类似于
delete from MyTable where idWorkerInfo='abc'
答案 2 :(得分:3)
您需要指定表的名称而不是通配符。
DELETE语句的基本语法如下(请参阅MSDN中的完整文档 - DELETE (Transact-SQL)):
DELETE FROM table_name
WHERE some_column=some_value;
此外,您不应该使用字符串连接创建SQL查询(从不在生产中使用它),因为这会使您容易受到SQL注入攻击。
相反,您应该使用参数化查询,以便正确转义所有用户输入:
var cmd = new SqlCommand("DELETE FROM MyTable WHERE idWorkerInfo=@id", conn2);
cmd.Parameters.AddWithValue("@id", WorkerIdTextBox.Text);
cmd.ExecuteNonQuery();
答案 3 :(得分:2)
*
中没有delete
...删除的语法如下
DELETE FROM table_name
WHERE some_column = some_value;
答案 4 :(得分:2)
查询本身不正确。
考虑一下:
delete from * where idWorkerInfo='Sth'
您需要将*替换为实际的表名。