列具有 NULL 值时出现“内部 .Net Framework 数据提供程序错误 30”错误
Posted
技术标签:
【中文标题】列具有 NULL 值时出现“内部 .Net Framework 数据提供程序错误 30”错误【英文标题】:Getting "Internal .Net Framework Data Provider error 30" error when column has NULL value 【发布时间】:2010-11-15 14:43:40 【问题描述】:我有一个简单的 .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
如果有人能提供帮助,我将不胜感激!
【问题讨论】:
您正在调用IsDBNull()
,当列实际为NULL
时它会引发异常?
@Pieter 正确!我什至尝试了简单的赋值(var obj = reader[colIdx];),它在那时抛出异常......
【参考方案1】:
联系 Sybase 的 Advantage.ODBC 新闻组后,有人建议这可能是一个错误,已在即将发布的新版本中修复。我还可以通过通过优势@sybase.com 联系 Sybase 并要求他们提供 ODBC 的 10.0.0.5 版本来获得新版本的驱动程序 司机。
【讨论】:
以上是关于列具有 NULL 值时出现“内部 .Net Framework 数据提供程序错误 30”错误的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Sqlite3 中添加默认值为 NULL 的 NOT NULL 列
CodeIgniter:我在提交注册表时出现此数据库错误 1048。
no_data_found 时出现异常,我想将两个变量分配给 null
创建具有大 (>1GB) BytesWritable 值大小的 SequenceFile 时出现 NegativeArraySizeException