mysql - 为什么“输入字符串的格式不正确。” 在 mySQL 的查询中?
问题描述
在以下代码中,我收到“输入字符串格式不正确”的运行时错误。在 oCommand.ExecuteReader() 之后。
oCommand.CommandText = "CheckOutItem";
oCommand.CommandType = System.Data.CommandType.StoredProcedure;
oCommand.Parameters.AddWithValue("@OrderID", OrderID);
oCommand.Parameters.AddWithValue("@GivenLargeSizeName", Enum.GetName(typeof(Size), Size.REGULAR));
oCommand.Parameters.AddWithValue("@GivenSmallSizeName", Enum.GetName(typeof(Size), Size.SMALL));
oCommand.Parameters.AddWithValue("@Latitude",oOrder.OrderTimeLocation.Location.latitude);
oCommand.Parameters.AddWithValue("@Longitude",oOrder.OrderTimeLocation.Location.longitude);
oCommand.Parameters.AddWithValue("@ListingID", MySqlDbType.Int64);
oCommand.Parameters.AddWithValue("@Quantity", MySqlDbType.Int16);
oCommand.Parameters.AddWithValue("@Size", MySqlDbType.VarChar);
oCommand.Parameters.AddWithValue("@DeliveryMethod", MySqlDbType.VarChar);
foreach (var OrderItem in oOrder.OrderItems)
{
oCommand.Parameters["@ListingID"].Value = OrderItem.ListingID;
oCommand.Parameters["@Quantity"].Value = OrderItem.Quantity;
oCommand.Parameters["@Size"].Value = Enum.GetName(typeof(Size), OrderItem.Size);
oCommand.Parameters["@DeliveryMethod"].Value = Enum.GetName(typeof(DeliverMethod), OrderItem.DeliveryPickupMethod);
using (var reader = oCommand.ExecuteReader())
{
while (reader.Read())
{
Int64 OrderItemID = Convert.ToInt64(reader["@ORDER_ITEM_ID"]);
Int64 OrderItemStatusID = Convert.ToInt64(reader["@ORDER_ITEM_STATUS_ID"]);
Int64 OrderItemPriceID = Convert.ToInt64(reader["@ORDER_ITEM_PRICE_ID"]);
TotalOrderCostFromDB = TotalOrderCostFromDB + Convert.ToDecimal(reader["@TOTAL_ORDER_COST"]);
}
}
}
如果我使用像这样的语句
oCommand.Parameters.AddWithValue("@ListingID",OrderItem.ListingID)
工作正常,但我不能循环。
我分配的所有值在调试中都是正确的,并且没有空值或奇怪的东西进入 .Value。
由于我在 AddWithValue 方法中得到了正确答案,我认为我对 StoredPoocedure 没有任何问题。
为此目的是否有更好的循环方法?
经过一些调试,我能够将问题缩小到最后两行
oCommand.Parameters.AddWithValue("@Size", MySqlDbType.VarChar);
oCommand.Parameters.AddWithValue("@DeliveryMethod", MySqlDbType.VarChar);
如果我用一个虚拟字符串初始化它,一切都很好。但是使用 VarChar 或 String 进行初始化会导致问题。据我了解,以下返回一个字符串对吗?
Enum.GetName(typeof(Size), OrderItem.Size)
解决方案
推荐阅读
- python - 3D 卷积神经网络中的输入输出形状
- java - 配置 SignalFx 以在 Kafka 中为生产者/消费者获取相同的 traceid
- mysql - 为什么 MySQL NOT IN 函数在空字符串结果下不能正常工作?
- python-3.x - pymysql.err.OperationalError: (2003, 我无法访问我的数据库
- arrays - 如何在没有内存泄漏的情况下正确分配 char[]
- ios - 如何使用 Frida 拦截 Swift 类的构造函数?
- postgresql - 将保存点与 JOOQ 和 JUnit 一起使用
- python - 在我的代码中,由于某种原因出现“索引超出范围”的错误,我实际上只是启动了 Python,因此不知道如何解决这个问题
- javascript - js防止textarea模糊
- c++ - Connect 4 Winning 横向功能