C# “附近的语法不正确”*&引用;

C# “附近的语法不正确”*&引用;,c#,sql-server,syntax,C#,Sql Server,Syntax,我的代码有问题。我在任何时候都没有使用过SQL服务,所以弄清楚问题出在哪里有点棘手。主要问题是它在标题上说了什么,当我尝试从SQL数据库中读取、更新或删除数据时,我得到了不正确的语法 代码如下: string Connection2 = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\AuthMyRegistery\AuthMyRegistery\Data.mdf;Integrated Security=True;User Instance=True

我的代码有问题。我在任何时候都没有使用过SQL服务,所以弄清楚问题出在哪里有点棘手。主要问题是它在标题上说了什么,当我尝试从
SQL数据库
读取
更新
删除
数据时,我得到了不正确的语法

代码如下:

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();

“*”不是delete语句的有效目标,要从哪个表中删除

语法应该类似于

delete from MyTable where idWorkerInfo='abc'

问题就在这里,没有定义表名

delete from * where idWorkerInfo=
应该是

Delete From TableName where idWorkerInfo=

您需要指定表的名称,而不是通配符

DELETE语句的基本语法如下(请参阅MSDN-)中的完整文档):

从表中删除\u名称
其中,某个_列=某个_值;
此外,您不应该使用字符串连接来创建SQL查询(永远不要在生产中使用它),因为这会使您容易受到SQL注入攻击

相反,您应该使用参数化查询,以便正确转义所有用户输入:

var cmd = new SqlCommand("DELETE FROM MyTable WHERE idWorkerInfo=@id", conn2);
cmd.Parameters.AddWithValue("@id", WorkerIdTextBox.Text);  
cmd.ExecuteNonQuery();

删除中没有
*
。。。delete的语法如下

DELETE FROM table_name
WHERE some_column = some_value;

查询本身不正确

考虑这一点:

delete from * where idWorkerInfo='Sth'

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

从何处获得该错误?
这个.WorkerIdTextBox.Text中有什么?甚至听说过参数化查询吗?也许您需要重新阅读DELETE语句所需的语法您不应该将文本框的内容直接放入sql字符串中。谷歌sql注入…-您不应该将SQL语句连接在一起,而应该使用参数化查询来避免SQL注入