【问题标题】:MySqlCommand.ExecuteReader() is throwing a System.Format exception on InitializationMySqlCommand.ExecuteReader() 在初始化时抛出 System.Format 异常
【发布时间】:2015-04-21 02:12:54
【问题描述】:

所以我正在尝试使用 MySqlDataReader 从我的数据库中获取数据。我知道数据库确实响应(插入、删除和更新我的程序中的所有工作都很好)。

using (MySqlConnection conn = new MySqlConnection(connectionString))
        {
            // Open a connection
            conn.Open();
            MySqlCommand command = conn.CreateCommand();
            command.CommandText = "select * from cs3500_u0848199.PairedGames";

            // Execute the command and cycle through the DataReader object

            using (MySqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                { /*do something here*/}
            }
        }

问题似乎与命令本身无关,因为该命令在 MySQL 工作台中工作。无论如何,在执行这行代码时

using (MySqlConnection conn = new MySqlConnection(connectionString))

VS 调试器注意到引发了以下异常

System.FormatException 未被用户代码处理
HResult=-2146233033 Message=Guid 应该包含 32 位数字和 4 破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。来源=mscorlib
堆栈跟踪: 在 System.Guid.TryParseGuidWithNoStyle(字符串 guidString,GuidResult& 结果) 在 System.Guid.TryParseGuid(字符串 g,GuidStyles 标志,GuidResult& 结果) 在 System.Guid..ctor(字符串 g) 在 MySql.Data.Types.MySqlGuid.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket 数据包,Int64 长度,布尔 nullVal) 在 MySql.Data.MySqlClient.NativeDriver.ReadColumnValue(Int32 索引,MySqlField 字段,IMySqlValue valObject) 在 MySql.Data.MySqlClient.Driver.ReadColumnValue(Int32 索引,MySqlField 字段,IMySqlValue 值) 在 MySql.Data.MySqlClient.ResultSet.ReadColumnData(布尔 outputParms) 在 MySql.Data.MySqlClient.ResultSet.NextRow(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlDataReader.Read() 在 d:\repositories\x0848199\PS11\ToDoService\BoggleService.svc.cs:line 中的 ToDoList.BoggleService.GetBriefStatus(String gameToken) 443 在 SyncInvokeGetBriefStatus(对象,对象 [],对象 []) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,Object[] 输入,Object[]& 输出) 在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 内部异常:

真的不确定为什么它告诉我有关 guid 格式的信息,因为我没有在此代码中使用 Guid。 任何帮助将不胜感激。

【问题讨论】:

  • 能否贴出cs3500_u0848199.PairedGames表中所有列的列和数据类型?
  • 还显示代码块,包括以下行:BoggleService.svc.cs:line 443 以及该行调用中使用的任何类的声明
  • K so 对于配对游戏中的列和数据类型 GameToken char(36) Player2Token char(36) Score1 int(11) Score2 int(11) Board char(16) Duration int(11) StartTime bigint (20)@Ron Beyer
  • 包含 BoggleService.svc.cs:line 443 行的代码块已经在我的原始帖子中。第 443 行特别是 while(reader.Read()) 行。我认为相关声明已包含在原始帖子中。如果我弄错了,请告诉我我的误解。 @亚历克斯
  • 错误消息似乎表明它在Guid 类型的内容未格式化为Guid 的内容上阻塞。

标签: c# mysql guid


【解决方案1】:

似乎将;old guids=true; 附加到连接字符串解决了该问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-17
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多