当列具有NULL值时,出现“内部.Net Framework数据提供程序错误30”错误

时间:2010-11-15 14:43:40

标签: c# odbc datareader advantage-database-server

我有一个简单的.NET控制台程序,它使用OdbcDataReader从Advantage Local Server获取行。 我在Windows 7上使用通过ODBC Administrator定义的系统DSN。 数据源使用Advantage StreamlineSQL ODBC驱动程序v 10.00.00.03以及以下参数:

  • 数据库路径:
  • 表类型:可用优势
  • 服务器类型:本地服务器(ALS)

程序正常工作,直到遇到列中具有NULL值的行。 然后我得到一个例外:

System.InvalidOperationException was caught   Message=Internal .Net Framework Data Provider error 30.   Source=System.Data   StackTrace:
       at System.Data.ProviderBase.DbBuffer.Validate(Int32 offset, Int32 count)
       at System.Data.ProviderBase.DbBuffer.PtrToStringUni(Int32 offset, Int32 length)
       at System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i)
       at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
       at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
       at System.Data.Odbc.OdbcDataReader.IsDBNull(Int32 i)
       at OdbcTest.Program.Main(String[] args) in c:\abcoa\visual studio 2010\Projects\OdbcTest\OdbcTest\Program.cs:line 66   InnerException:

VS2010中的Intellisence也给出了以下提示: * _COMPlusExceptionCode = -532462766 *

我还打开了ODBC跟踪,可以在SQL.LOG中看到以下错误:

OdbcTest.vshost b34-11e4    EXIT  SQLSetStmtAttrW  with return
code -1 (SQL_ERROR)
        SQLHSTMT            0x0037C6D8
        SQLINTEGER                1228 <unknown>
        SQLPOINTER          [Unknown attribute 1228]
        SQLINTEGER                  -5 

        DIAG [HY092] [iAnywhere Solutions][Advantage ODBC
Driver]Invalid attribute identifier. (2184) 

OdbcTest.vshost b34-11e4    ENTER SQLGetDiagFieldW 
        SQLSMALLINT                  3 
        SQLHANDLE           0x0037C6D8
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x05ABE480
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x05ABE548

如果有人可以提供帮助,我将非常感激!

1 个答案:

答案 0 :(得分:1)

在联系Sybase的Advantage.ODBC新闻组后,有人认为这可能是新版本中新修复的错误。我还可以通过电子邮件:advantage@sybase.com与Sybase联系并获取10.0.0.5版本的ODBC来获取新版本的驱动程序 驱动程序。