blob类型黑莓的数据类型不匹配

时间:2013-01-23 11:24:08

标签: sqlite blackberry blob

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

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;
    }

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您好我在我的本地数据库中使用以下代码保存图像,我获得了成功。我刚刚发布了我的3种方法

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

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

ContactImage_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());
        }
    }

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