我有一个简单的.NET控制台程序,它使用OdbcDataReader从Advantage Local Server获取行。 我在Windows 7上使用通过ODBC Administrator定义的系统DSN。 数据源使用Advantage StreamlineSQL ODBC驱动程序v 10.00.00.03以及以下参数:
程序正常工作,直到遇到列中具有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
如果有人可以提供帮助,我将非常感激!
答案 0 :(得分:1)
在联系Sybase的Advantage.ODBC新闻组后,有人认为这可能是新版本中新修复的错误。我还可以通过电子邮件:advantage@sybase.com与Sybase联系并获取10.0.0.5版本的ODBC来获取新版本的驱动程序 驱动程序。