我有一个简单的 .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
如果有人可以提供帮助,我将不胜感激!