C# “附近的语法不正确”*&引用;
我的代码有问题。我在任何时候都没有使用过SQL服务,所以弄清楚问题出在哪里有点棘手。主要问题是它在标题上说了什么,当我尝试从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数据库中读取
、更新
或删除
数据时,我得到了不正确的语法
代码如下:
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注入