MySqlDataReader.Read()抛出ArgumentOutOfRangeException

时间:2013-09-01 10:32:46

标签: mysql .net connector

我在win7 x64平台上使用mysql .net连接器6.4.4。从MySqlDataReader对象读取数据时,它会在第18行之后抛出异常。但在另一个应用程序中,我可以没有错误地占用40行。

错误就在这里:

MySqlDataReader.Read()

非常感谢任何帮助。

Exception details:

System.ArgumentOutOfRangeException was unhandled
  Message=Non-negative number required.
Parameter name: count
  Source=mscorlib
  ParamName=count
  StackTrace:
       at System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count)
       at MySql.Data.MySqlClient.MySqlPacket.Read(Byte[] byteBuffer, Int32 offset, Int32 count)
       at MySql.Data.MySqlClient.MySqlPacket.ReadString(Int64 length)
       at MySql.Data.Types.MySqlString.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket packet, Int64 length, Boolean nullVal)
       at MySql.Data.MySqlClient.NativeDriver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue valObject)
       at MySql.Data.MySqlClient.Driver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue value)
       at MySql.Data.MySqlClient.ResultSet.ReadColumnData(Boolean outputParms)
       at MySql.Data.MySqlClient.ResultSet.NextRow(CommandBehavior behavior)
       at MySql.Data.MySqlClient.MySqlDataReader.Read()
       at VeriTasima.Form1..ctor() in E:\Projeler\VeriTasima\VeriTasima\Form1.cs:line 42
       at VeriTasima.Program.Main() in E:\Projeler\VeriTasima\VeriTasima\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

更新:

// test
            string commandString = "SELECT * FROM haber LIMIT 50";
            MySqlConnection connection = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MySQL"].ConnectionString);
            MySqlCommand command = new MySqlCommand(commandString, connection);
            connection.Open();
            MySqlDataReader sdr = command.ExecuteReader();
            int count = 0;
            while (sdr.Read())
            {
                count++;
            }
            sdr.Close();
            sdr.Dispose();
            command.Dispose();
            connection.Close();
            connection.Dispose();
            MessageBox.Show(count.ToString());

更新:

我通过将目标平台从x86设置为任意CPU来修复此问题。现在工作正常。

0 个答案:

没有答案