大家帮我看看这个错误是怎么回事?我是往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;
}
}

解决方案 »

  1.   

    也许是你的类型错了吧~~
    你把库里面的那个参数2的字断改成IMAGE类型,参数信息改成 
    System.Data.SqlDbType.Image
      

  2.   

    把OdbcType.Binary改为OleDbType.Binary试试看
      

  3.   

    using System.Data.Odbc;我用的是ODBC数据源,数据库不是SQL SERVER ,不能用SqlDbType和OleDbType.
      

  4.   

    System.Data.SqlDbType.Image
    应该可以解决问题
      

  5.   

    MARK
    大家应该注意数据库是INFORMIX,连接的是ODBC数据源,根本就不能使用SqlDbType,估计是ODBC驱动不支持的问题.
      

  6.   

    期待使用过informix数据库的高手指导...
      

  7.   

    没用过informix
    但从楼主给出的信息来看,很大程度上应该还是数据类型 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);
      

  8.   

    OdbcType我都试了,都是一样的异常
    OdbcParameter blobCon = dbComm.Parameters.Add(blobColumn,allByte);也是一样.
      

  9.   

    tryblobCon.DbType = DbType.Binary;
      

  10.   

    问题解决.现在告诉大家原来是要使用IBM.Data.Informix.DLL