我在db2数据库中存了张照片(blob类型),插入数据正确完成,可是读数据的时候出现问题.
sql语句为:string Sql = "select " + "FingerprintOne "+ " from InjuredFingerprintInfo where pdcode=?";其中FingerprintOne 为图片字段.
读取的时候使用下列语句均出现错误
语句1:OdbcDataReader rdr = DB2.ExecuteReaders(CommandType.Text, Sql, Parameters);
   rdr.GetBytes(0, 0, fingerprintproperty, 0, 256 * 304);
此语句运行时出现异常:异常为不存在此行/列的数据
语句2: OdbcDataReader rdr = DB2.ExecuteReaders(CommandType.Text, Sql, Parameters);      if (rdr["FingerprintOne"] != System.DBNull.Value)
            {
                fingerprintproperty = (byte[])rdr["FingerprintOne"];
            }
出现异常同上.fingerprintproperty 为我定义的一个byte[]用来保存取出的数据.

解决方案 »

  1.   

    if(rdr.HasRows)
    {
    rdr.read();
    然后再取数据.}
      

  2.   

    只有rdr.Read()后才把当前位置前进到第一条记录位置.
      

  3.   

    谢谢cpp2017(慕白兄),我先试一下!!不行的话还要问您!
      

  4.   

    慕白哥哥我用下面这代码的时候出现异常 异常为:未知 SQL 类型 - -98。
    if (rdr.HasRows)
    {
        rdr.Read(); 
      fingerprintproperty = (byte[])rdr["FingerprintOne"];
    }
    我用这个代码的时候没有出现异常但是数据取出来是不正确的(是不是我对GetBytes()方法的使用是错误的呢?)
    if (rdr.HasRows)

      //fingerprintproperty = (byte[])rdr["FingerprintOne"];
        rdr.Read();
        rdr.GetBytes(0, 0, fingerprintproperty, 0, 256 * 304);
      }慕白兄一定要指教呀!!
      

  5.   

    fingerprintproperty = (byte[])rdr["FingerprintOne"];
    代码是没有问题的.
      

  6.   

    那未知 SQL 类型是什么原因呢!
      

  7.   

    db2没有用过.数据类型是否对应.net的byte,可能有问题
      

  8.   

    谢,幕白兄!这些日子比较忙!没来给分!我最后用的是ibm自带的驱动才实现!