(1) C#代码如下:
public void Fill(System.Data.DataTable oDataTable, string sCont)
{
try
{
if (oDataTable != null)
{
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
string strSQL = "Select * from TB_TEXT_APPEND where 1=2"; // 只查询表结构
DbCommand cmd = this.GetSqlStringCommond(strSQL); dbDataAdapter.SelectCommand = cmd;
OpenConnection(dbDataAdapter.SelectCommand.Connection, this._DataSourceName);
dbDataAdapter.FillSchema(oDataTable, SchemaType.Mapped); // * * * 执行到这里报异常
dbDataAdapter.Fill(oDataTable);
} }
catch (System.Exception err)
{
throw (err); //
}
}(2) 数据库是IBM DB2, 表 TB_TEXT_APPEND 的结构如下:
(APPEND_ID VARCHAR(40) NOT NULL,
FILE_NAME VARCHAR(127),
FILE_SIZE INTEGER,
FILE_TYPE VARCHAR(20),
CONTENTS BLOB(1048576) LOGGED NOT COMPACT INLINE LENGTH 164
)(3) 异常的内容是:
System.ArgumentException: 未知 SQL 类型 - -98。
在 System.Data.Odbc.TypeMap.FromSqlType(SQL_TYPE sqltype)
在 System.Data.Odbc.OdbcDataReader.BuildMetaDataInfo()
在 System.Data.Odbc.OdbcDataReader.GetSchemaTable()
在 System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.FillSchemaFromReader(DataSet dataset, DataTable datatable, SchemaType schemaType, String srcTable, IDataReader dataReader)
在 System.Data.Common.DataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDataReader dataReader)
在 System.Data.Common.DbDataAdapter.FillSchemaInternal(DataSet dataset, DataTable datatable, SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType)
在 ChinaUIP.Engine.Data.Access.DbHelper.Fill(DataTable oDataTable, String sCont) (4) 把BLOB类型那个字段去掉,执行能通过,加上BLOB类型的字段,执行就报异常。
我想请教一下,为什么会有这个问题? 如何解决? DB2里除了BLOB,还有什么其它可用的二进制类型吗?
public void Fill(System.Data.DataTable oDataTable, string sCont)
{
try
{
if (oDataTable != null)
{
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
string strSQL = "Select * from TB_TEXT_APPEND where 1=2"; // 只查询表结构
DbCommand cmd = this.GetSqlStringCommond(strSQL); dbDataAdapter.SelectCommand = cmd;
OpenConnection(dbDataAdapter.SelectCommand.Connection, this._DataSourceName);
dbDataAdapter.FillSchema(oDataTable, SchemaType.Mapped); // * * * 执行到这里报异常
dbDataAdapter.Fill(oDataTable);
} }
catch (System.Exception err)
{
throw (err); //
}
}(2) 数据库是IBM DB2, 表 TB_TEXT_APPEND 的结构如下:
(APPEND_ID VARCHAR(40) NOT NULL,
FILE_NAME VARCHAR(127),
FILE_SIZE INTEGER,
FILE_TYPE VARCHAR(20),
CONTENTS BLOB(1048576) LOGGED NOT COMPACT INLINE LENGTH 164
)(3) 异常的内容是:
System.ArgumentException: 未知 SQL 类型 - -98。
在 System.Data.Odbc.TypeMap.FromSqlType(SQL_TYPE sqltype)
在 System.Data.Odbc.OdbcDataReader.BuildMetaDataInfo()
在 System.Data.Odbc.OdbcDataReader.GetSchemaTable()
在 System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.FillSchemaFromReader(DataSet dataset, DataTable datatable, SchemaType schemaType, String srcTable, IDataReader dataReader)
在 System.Data.Common.DataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDataReader dataReader)
在 System.Data.Common.DbDataAdapter.FillSchemaInternal(DataSet dataset, DataTable datatable, SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType)
在 ChinaUIP.Engine.Data.Access.DbHelper.Fill(DataTable oDataTable, String sCont) (4) 把BLOB类型那个字段去掉,执行能通过,加上BLOB类型的字段,执行就报异常。
我想请教一下,为什么会有这个问题? 如何解决? DB2里除了BLOB,还有什么其它可用的二进制类型吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货