C# 删除被称为C的查询异常#

C# 删除被称为C的查询异常#,c#,mysql,winforms,desktop-application,C#,Mysql,Winforms,Desktop Application,嘿,伙计们,我的数据库项目的CRUD项目快完成了。我只是想完成删除功能 query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox); 我的变量mDeleteTextBox填充了我想要的值。 我的问题出了什么问题 错误消息 An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MyS

嘿,伙计们,我的数据库项目的CRUD项目快完成了。我只是想完成删除功能

 query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox);
我的变量mDeleteTextBox填充了我想要的值。 我的问题出了什么问题

错误消息

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.TextBox, Text: 6' at line 1

您的附加信息说明了一切:您试图将mTextBox作为查询的参数传递,但是为了访问textbox本身的内容(这是您要用来完成查询的数据),您应该访问textbox的Text属性

因此,您的代码:

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox);
变成

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox.Text);

您的附加信息说明了一切:您试图将mTextBox作为查询的参数传递,但是为了访问textbox本身的内容(这是您要用来完成查询的数据),您应该访问textbox的Text属性

因此,您的代码:

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox);
变成

query = string.Format("DELETE FROM customers WHERE `cid`= {0};", mDeleteTextBox.Text);

您的
{0}
也可能重复,您的
{0}
需要有引号,或者更好的是,使用参数化查询:另外,检查mDeleteTextBox中的类型是否为string。也许你想写mDeleteTextBox.Text?Nigrimist你完全正确,谢谢!您的
{0}
也可能重复,您的
{0}
需要有引号,或者更好的是,使用参数化查询:另外,检查mDeleteTextBox中的类型是否为string。也许你想写mDeleteTextBox.Text?Nigrimist你完全正确,谢谢!更好的答案是教OP如何使用参数,永远不要像这样构建sql语句。这对sql注入是开放的。更好的答案是教OP如何使用参数,永远不要像这样构建sql语句。这对sql注入是开放的。