这是OleDbDataAdapter的错误

时间:2013-11-01 15:28:04

标签: vb.net ado.net oledb

我不认为OleDbDataAdapter会在尝试为类型为decimal(28,3)的db表列填充DataSet时抛出异常。消息是“数值太大而不适合96位十进制”。 您能否检查一下,我对ADO.NET和OLE DB组件没有重要经验?

我们在应用程序中的VB.NET代码是:

Dim dbDataSet As New DataSet
Dim dbDataAdapter As OleDbDataAdapter
Dim dbCommand As OleDbCommand
Dim conn As OleDbConnection
Dim connectionString As String

'parts where connectionString is set 

conn = New OleDbConnection(connectionString)

'part where sqlQuery is set but it ends up being "SELECT Price As 'Price' From PricebookView" - Price is of type decimal(28,3)

dbCommand = New OleDbCommand(sqlQuery, conn)
dbCommand.CommandTimeout = cmdTimeout
dbDataAdapter = New OleDbDataAdapter(dbCommand)
dbDataAdapter.Fill(dbDataSet)

最后一行是抛出异常的位置,堆栈跟踪的顶部是:

at System.Data.ProviderBase.DbBuffer.ReadNumeric(Int32 offset)     
at System.Data.OleDb.ColumnBinding.Value_NUMERIC()     
at System.Data.OleDb.ColumnBinding.Value()     
at System.Data.OleDb.OleDbDataReader.GetValues(Object[] values)     
at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)     
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()     
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)     
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)     
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)     
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)     
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)     
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)     
...

我不确定为什么会尝试将值设置为Int32。

感谢您的时间!

0 个答案:

没有答案