我想使用插入或替换查询,这里我给出了我有的代码
String sql="insert or replace into Stock_Table values (?,?,?,?,?,?)";
sqlite.execSQL(sql, new String[]{id,name,code,vat,itmquan,pric});
现在我想在此表中另外插入一个字段,但该字段不是字符串 它是一个字节数组格式,我想在这个表中添加一个图像,我给这个图像的数据类型作为表中的BLOB,但我不能将字节数组格式作为参数传递到上面的sqlite.execsql函数,这里我给出了我想插入的格式
byte []byteImage;
String sql="insert or replace into Stock_Table values (?,?,?,?,?,?,?)";
sqlite.execSQL(sql, new String[]{id,name,code,vat,itmquan,pric,byteImage});
我怎么能让它成为可能,我无法将此字节数组转换为字符串我想将图像作为BLOB格式插入,请帮我找到任何解决方案
答案 0 :(得分:2)
使用insert method的变体,它带有ContentValues object,允许您直接使用字节数组:
byte[] byteImage;
ContentValues cv = new ContentValues();
cv.put("id", id);
// ...
cv.put("blobcolumn", byteImage);
sqlite.insertWithOnConflict("Stock_Table", null, cv, SQLiteDatabase.CONFLICT_REPLACE);
答案 1 :(得分:0)
用这种方式..
@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();
}