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)表からの画像検索

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

このコード スニペットでコードをクロス チェックしてください。問題が解決されることを願っています。

于 2013-01-25T06:05:27.787 に答える