0

我有一个例外,即这一行中的数据类型不匹配

byte[] _data = (byte[])row.getBlobBytes(1);

在表中我有第 2 列的类型是 BLOB。

public static UrlRsc getContentUrl(String name) {
        UrlRsc elementRsc = null;
        try {
            Statement statement = DB
                    .createStatement("SELECT  * FROM table where"
                            + " Name='"
                            + name + "'");
            statement.prepare();
            Cursor cursor = statement.getCursor();
            Row row;


            while (cursor.next()) {
                row = cursor.getRow();

                byte[]_data;
                _data = row.getBlobBytes(1);


            }
            statement.close();
            cursor.close();
        } catch (DatabaseException dbe) {
            System.out.println(dbe.toString());
        } catch (DataTypeException dte) {
            System.out.println(dte.toString());
        }
        return elementRsc;
    }

谁能帮我 ?

4

1 回答 1

0

嗨,我正在使用以下代码将图像保存在我的本地数据库中,并且我成功了。我刚刚发布了我的 3 种方法

注意:当我将图像插入数据库时​​,我在字节数组中更改了该图像,然后只有我可以保存到该表中

1) 表创建 2) 表插入 3) 从表中检索图像

联系人Image_table创建

public ContactImageTableCreation(){
        try{
        Statement stmt=DATABASE.createStatement("create table if not exists 'ContactImage_table'(ID 'TEXT',image 'blob',NodeId 'TEXT')");
        stmt.prepare();
        stmt.execute();
        stmt.close();
        }catch(Exception e){
          System.out.println(e.getMessage());
        }
    }

将数据插入 ContactImage_table

public void ContactImageTableInsertion(){
        try{
            Statement st=DATABASE.createStatement("insert into ContactImage_table (ID,Image,NodeId)values(?,?,?)");
            st.prepare();
            st.bind(1, "101");
            st.bind(2, BYTE_ARRY);
            st.bind(3,"103");
            st.execute();
            st.close();
        }catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

从 ContactImage_table 检索数据

public ContactImageTableDataRetriving(){
        try{


         Statement st=DATABASE.createStatement("select * from ContactImage_table");
          st.prepare();
          Cursor c=st.getCursor();
          Row r;
          int i=0;
          while(c.next()){
              r=c.getRow();
              i++;

//          ContactImageObject is a wrapper class for data handling 

              contactImageObj=new ContactImageObject();
              contactImageObj.setId(r.getString(0));
              byte[] decoded=r.getBlobBytes(1);
              EncodedImage fullImage = EncodedImage.createEncodedImage(decoded, 0, decoded.length);
              Bitmap b=fullImage.getBitmap();
              contactImageObj.setImage(b);

//            System.out.println("Successfully retrived");
              if(i==0){
//                System.out.println("No Records");
              }
          } 
              st.close();

        }catch (Exception e) {
//          System.out.println(e.getMessage());
        }
    }

只需使用此代码片段交叉检查您的代码,希望您能得到最好的解决

于 2013-01-25T06:05:27.787 回答