2

我有一个简单的 .NET 控制台程序,它使用 OdbcDataReader 从 Advantage Local Server 获取行。我在 Windows 7 上使用通过 ODBC 管理器定义的系统 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

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

4

1 回答 1

1

联系 Sybase 的 Advantage.ODBC 新闻组后,有人建议这可能是一个错误,已在即将发布的新版本中修复。我还可以通过通过优势@sybase.com 联系 Sybase 并要求他们提供 10.0.0.5 版本的 ODBC 驱动程序来获得新版本的驱动程序。

于 2010-11-17T21:46:34.123 回答