parameter passing with sqlite.execSQL function in android
Use a variant of the insert method, which takes a ContentValues object, which allows you to use a byte array directly:
byte[] byteImage;ContentValues cv = new ContentValues();cv.put("id", id);// ...cv.put("blobcolumn", byteImage);sqlite.insertWithOnConflict("Stock_Table", null, cv, SQLiteDatabase.CONFLICT_REPLACE);
use this way..
@Override public void onClick(View v) { SQLiteDatabase myDb; String MySQL; int icount; byte[] byteImage1 = null; byte[] byteImage2 = null; MySQL="create table emp1(_id INTEGER primary key autoincrement, fio TEXT not null, picture BLOB);"; myDb = openOrCreateDatabase("/sdcard/MyDB.db", Context.MODE_PRIVATE, null); // myDb.execSQL(MySQL); String s=myDb.getPath(); textView.append("\r\n" + s+"\r\n"); myDb.execSQL("delete from emp1"); ContentValues newValues = new ContentValues(); newValues.put("fio", "hello dude"); /////////// insert picture to blob field ///////////////////// try { FileInputStream instream = new FileInputStream("/sdcard/sunil.png"); BufferedInputStream bif = new BufferedInputStream(instream); byteImage1 = new byte[bif.available()]; bif.read(byteImage1); textView.append("\r\n" + byteImage1.length+"\r\n"); newValues.put("picture", byteImage1); long ret = myDb.insert("emp1", null, newValues); if(ret<0) textView.append("\r\n!!! Error add blob filed!!!\r\n"); } catch (IOException e) { textView.append("\r\n!!! Error: " + e+"!!!\r\n"); } ////////////Read data //////////////////////////// Cursor cur = myDb.query("emp1",null, null, null, null, null, null); cur.moveToFirst(); while (cur.isAfterLast() == false) { textView.append("\r\n" + cur.getString(1)+"\r\n"); cur.moveToNext(); } ///////Read data from blob field//////////////////// cur.moveToFirst(); byteImage2=cur.getBlob(cur.getColumnIndex("picture")); bmImage.setImageBitmap(BitmapFactory.decodeByteArray(byteImage2, 0, byteImage2.length)); textView.append("\r\n" + byteImage2.length+"\r\n"); ////////////////////////// cur.close(); myDb.close(); }