c# - 通过 MySQL 更新时出现错误 输入字符串格式不正确

标签 c# mysql

尝试通过 MySQL .NET 连接器更新表时,出现错误“输入字符串格式不正确”

更新语句在通过 MySQL 工作台运行时工作正常,但不能通过代码运行,我希望有人能告诉我原因。

代码是:

MySqlCommand command = new MySqlCommand();
command.Connection = conn;
command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId like '" + amazonOrderId + "%';";
command.ExecuteNonQuery();

我尝试过作为非查询执行和作为 ExecuteReader() 执行;没有运气。

我确信这是我犯的一个简单错误,但我似乎一生都找不到它,所以任何帮助将不胜感激。

-- 编辑-- 我尝试了以下方法,但没有成功:

MySqlCommand command = new MySqlCommand();
command.Connection = conn;
command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId like '@amazonOrderId';";
command.Parameters.AddWithValue("@amazonOrderId", amazonOrderId);

还将 CommandText 更改为:

 command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where convert(varchar(50), amazonOrderId) like '" + amazonOrderId + "';";

 command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId = '@amazonOrderId';";

command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId = @amazonOrderId;";

-- 分辨率 --

我的解决方案实际上是在另一段代码中找到的。运行调试器几次后,很明显 MySqlConnection 对象试图实例化两次 - 使用相同的名称等。我删除了第二次实例化,它已经解决了问题。可惜这个错误具有误导性。

我感谢每个人的回应,因为我觉得他们让我的代码变得更好,因此我给 Jon、Steve 和 Chris +1。谢谢您的帮助!

最佳答案

变量 amazonOrderId 是数字吗?如果是这样,如果不对变量调用 ToString(),则无法向其添加字符串。

amazonOrderId.ToString() + "%"

数据库中的 amazonOrderId 是数字吗?如果是这样,您是否尝试过convert(varchar)?

MySqlCommand command = new MySqlCommand(); 
command.Connection = conn; 
command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where convert(varchar(50), amazonOrderId) like @OrderID;"; 
command.Parameters.AddWithValue("@orderID", amazonOrderId + "%");  
command.ExecuteNonQuery(); 

但我不确定为什么你需要 LIKE 和 %。这也会更新吗:

1001 - amazon order id
10010
10011
10012
10013 
etc.

这是你真正想要的吗?

如果不是,则使用 equal 代替,不带单引号。

MySqlCommand command = new MySqlCommand(); 
command.Connection = conn; 
command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId = @OrderId;"; 
command.Parameters.AddWithValue("@orderID", amazonOrderId);  
command.ExecuteNonQuery(); 

如果这是您想要的,那么为什么不使用介于或大于?

MySqlCommand command = new MySqlCommand(); 
command.Connection = conn; 
command.CommandText = "update fulfilled_shipments_data set addedCustomer=1 where amazonOrderId > @OrderId;"; 
command.Parameters.AddWithValue("@orderID", int.Parse(amazonOrderId.ToString() + "0"));  
command.ExecuteNonQuery(); 

关于c# - 通过 MySQL 更新时出现错误 输入字符串格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11265103/

相关文章:

c# - C#中使用证书加密和解密

c# - 如何使用 Bouncy CaSTLe 或其他 C# 库在 C# 中验证此 PGP 消息

mysql - 无法在 Windows 8 中使用命令行连接到 mysql 数据库

C# MYSQL - 关于重复键更新 - 相同的查询不同的结果

Mysql:ALTER TABLE而不锁定表?

javascript - PHP抓取对应列id

mysql - 无法从 Amazon EC2 中的 Java Servlet 连接到 MySQL

c# - MVC4 - 路由值不被记住

c# - jQuery ImageMapster : Highlighting Issues

c# - 使用 c# datareader 时时间戳的不同格式