2

イメージを Blackberry の SQLite データベースに保存したいのですが、どうすればいいですか?? サーバーから画像を取得してからデータベースに保存したい..サーバーから画像を完全に取得し、画像をバイト[]としてデータベースに保存します..しかし、私はそれを取得することができません..だからplzは私を助けてください...

質問に編集されたコードは、読むことができます:

try {
   Statement st = db.createStatement("SELECT * FROM Image");
   st.prepare(); 
   Cursor c = st.getCursor();
   Row r;
   while(c.next()) {
      r = c.getRow();
      byte[] pic=r.getBlobBytes(0);
      st.close();
      EncodedImage _bmap = EncodedImage.createEncodedImage(pic, 0, pic.length);
      BitmapField bmf=new BitmapField(_bmap.getBitmap());
      add(bmf);
   }
} catch ( Exception e ) {
   System.out.println( e.getMessage() );
   e.printStackTrace();
}
4

1 に答える 1

4

コードには blob 列の名前が記載されていないため、 と呼びますimage_data。挿入には次のようなものが機能するはずです。

EncodedImage pic = getImage();
byte [] imageBytes = pic.getData();
Statement st = db.createStatement("INSERT INTO Image (image_data) values (?)");
st.prepare();
st.bind(1, imageBytes);
st.execute();

現在のコードでは、blob が常にテーブル スキーマの最初の列であると想定されているため、取得の場合は列に明示的に名前を付けると役立つ場合があります。また、ループ内でステートメントを閉じないでください。これにより、最初の画像以降の読み取りがブロックされます。

Statement st = db.createStatement("SELECT image_data FROM Image");
st.prepare(); 
Cursor c = st.getCursor();
Row r;
while(c.next()) {
   r = c.getRow();
   byte[] pic=r.getBlobBytes(0);
   EncodedImage _bmap = EncodedImage.createEncodedImage(pic, 0, pic.length);
   BitmapField bmf=new BitmapField(_bmap.getBitmap());
   add(bmf);
}
st.close();  // moved this line out of the loop
于 2012-07-29T20:10:30.143 に答える