“*”附近的语法不正确

时间:2015-12-07 11:33:46

标签: c# sql-server syntax

我的代码出现问题。我没有在任何时候使用过SQL服务,所以找出问题是有点棘手的。主要问题是它在标题上的内容,当我尝试Read中的UpdateDeleteSQL 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();

5 个答案:

答案 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'

您需要将*替换为实际的表名。