大家帮我看看这个错误是怎么回事?我是往informix7.3里存错大二进制数据,数据库中的字段类型是BYTE,执行到dbComm.ExecuteNonQuery();时总抛出异常:"[INTERSOLV][ODBC Informix driver]This is either an Unknown Type or is not supported currently. Error in parameter 2."string sql = "insert into "+tableName+"("+tagColumn+","+blobColumn+") values (?,?)";
try
{
dbComm = new OdbcCommand(sql,dbConn);
OdbcParameter tagCon = dbComm.Parameters.Add(tagColumn,OdbcType.Char,tagValue.Length);
tagCon.Value = tagValue;
OdbcParameter blobCon = dbComm.Parameters.Add(blobColumn,OdbcType.Binary);//,allByte.Length);
blobCon.Value = allByte;
dbComm.ExecuteNonQuery();
}
catch(OdbcException exp)
{
for (int i=0; i < exp.Errors.Count; i++)
{
MessageBox.Show("Index #" + i + "\n" +"错误信息: " + exp.Errors[i].Message + "\n" + "SQL语句: "+sql,"执行SQL语句出错!",MessageBoxButtons.OK );
return false;
}
}
try
{
dbComm = new OdbcCommand(sql,dbConn);
OdbcParameter tagCon = dbComm.Parameters.Add(tagColumn,OdbcType.Char,tagValue.Length);
tagCon.Value = tagValue;
OdbcParameter blobCon = dbComm.Parameters.Add(blobColumn,OdbcType.Binary);//,allByte.Length);
blobCon.Value = allByte;
dbComm.ExecuteNonQuery();
}
catch(OdbcException exp)
{
for (int i=0; i < exp.Errors.Count; i++)
{
MessageBox.Show("Index #" + i + "\n" +"错误信息: " + exp.Errors[i].Message + "\n" + "SQL语句: "+sql,"执行SQL语句出错!",MessageBoxButtons.OK );
return false;
}
}
解决方案 »
- 关于c#调用c++DLL问题
- c#怎么编写dll
- 怎么在webbrowser的焦点处插入图片
- 元宵节了献给CSDN的朋友最宝贵的礼物,来自全球最顶尖的IT培训企业-Total Training for Microsoft Visual Studio 2005 中文版视频培训教材
- 谁有好的学习资料,马上给分!
- 如何得到页面不可打印区域的下边距?
- 上次骂清华同方是我的错!这里散分!个不是!
- 关于socket 异步监听的问题。我搞不懂。
- 怎樣才能在一個DataGrid中選擇多條記錄,進行刪除,顴修改呢
- 怎么将一个wav格式的文件转换成mp3的
- ftp出问题了,不知道这个是什么原因呀???
- 最近用了几天时间做了一个资料管理程序,发上来看看。
你把库里面的那个参数2的字断改成IMAGE类型,参数信息改成
System.Data.SqlDbType.Image
应该可以解决问题
大家应该注意数据库是INFORMIX,连接的是ODBC数据源,根本就不能使用SqlDbType,估计是ODBC驱动不支持的问题.
但从楼主给出的信息来看,很大程度上应该还是数据类型 OdbcType.Binary 与 informix的byte类型对应不起来,楼主可以试试OdbcType的其他类型——OdbcType.Image:变长二进制数据。最大长度因数据源而定 (SQL_LONGVARBINARY)。它映射到 Byte 类型的 Array。
OdbcType.Timestamp:二进制数据流 (SQL_BINARY)。它映射到 Byte 类型的 Array。
OdbcType.TinyInt:确切数值,其精度为 3,小数位数为 0(有符号:-128 <= n <= 127,没有符号:0 <= n <= 255)(SQL_TINYINT)。它映射到 Byte。
OdbcType.VarBinary:变长二进制。由用户设置该最大值 (SQL_VARBINARY)。它映射到 Byte 类型的 Array。 或者楼主用:
OdbcParameterCollection.Add(object value)这个重载试试——>
OdbcParameter blobCon = dbComm.Parameters.Add(allByte);
OdbcParameter blobCon = dbComm.Parameters.Add(blobColumn,allByte);也是一样.