2

OdbcDataReader を使用して Advantage Local Server から行をフェッチする単純な .NET コンソール プログラムがあります。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 のインテリジェンスも次のヒントを提供します: *_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 ニュースグループに問い合わせたところ、これはバグであり、今後のリリースで修正される可能性があることが示唆されました。また、advance@sybase.com で Sybase に連絡し、10.0.0.5 バージョンの ODBC ドライバーを要求することで、新しいバージョンのドライバーを入手することもできました。

于 2010-11-17T21:46:34.123 に答える