转:Android SQLite 数据库 存取 BLOB 二进制 文件
原文地址,转载请说明:http://blog.sina.com.cn/s/blog_539070ad0100nesa.html
Android开发时用到二进制数据(也可以理解为BYTE数组)的SQLite存取,可能会有人对存取如mp3、图片类文件困惑,其实mp3、图片类文件读到内存就可理解为BYTE数组,只要在下面的基础上增加将文件读到BYTE数组就可以了,其他操作是相同的(在网上搜了一段代码放下面了)。
写此文的目的是方便自己今后查询,当然碰巧方便了其他人就当我奉献了:)
package com.Jung.DH;
import java.io.ByteArrayOutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
// 数据操作类
public class testSeedDB {
private Context mContext = null;
private testDBHelper mDBHelper = null;
private SQLiteDatabase mTestDatabase = null;
private static final String DATABASE_NAME = "DHSeedData.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_SEED = "TBseed";
private static final String TABLE_INFO = "TBinfo";
// 构造函数,一个引用类的Context作为参数
public testSeedDB(Context context){
mContext = context;
}
// 打开数据库
public void open(){
mDBHelper = new testDBHelper(mContext,DATABASE_NAME, null, DATABASE_VERSION);
mTestDatabase = mDBHelper.getWritableDatabase();
Log.i("testSeedDB", "open");
}
// Close the database
public void close(){
mDBHelper.close();
}
public void CreateSeedTable() {
// 创建数据表是先删除以前的,以免出错
String sql = "drop table "+ TABLE_SEED;
try {
mTestDatabase.execSQL(sql);
} catch (SQLException e) {
}
// second create table
sql = "CREATE TABLE IF NOT EXISTS " + TABLE_SEED
+ " (ID INTEGER PRIMARY KEY, ToyID INTEGER,ToySeed BLOB,ToyMemo TEXT);";
try {
mTestDatabase.execSQL(sql);
} catch (SQLException ex) {
}
Log.i("testSeedDB", "CreateSeedTable");
}
public void CreateInfoTable() {
// first delete old table
String sql = "drop table"+ TABLE_INFO;
try {
mTestDatabase.execSQL(sql);
} catch (SQLException e) {
}
// second create table
sql = "CREATE TABLE IF NOT EXISTS " + TABLE_INFO
+ " (ToyID INTEGER PRIMARY KEY,ToySeed BLOB,ToyMemo TEXT not null);";
try {
mTestDatabase.execSQL(sql);
} catch (SQLException ex) {
}
}
public void CleanSeedTable() {
try {
mTestDatabase.delete(TABLE_SEED, null, null);
} catch (SQLException e) {
}
Log.i("testSeedDB", "ClearSeedTable");
}
public void insertSeedItem(long ToyID, byte[]ToySeed) {
String sqlstr = "insert into " + TABLE_SEED + " (ToyID, ToySeed,ToyMemo) values (?,?,?);";
Object[] args = new Object[]{ToyID,ToySeed,null};
try{
mTestDatabase.execSQL(sqlstr,args);
} catch (SQLException ex) {
}
Log.i("testSeedDB", "insertSeedItem");
}
public byte[] GetSeedItem(long ToyID) {
Cursor cur;
byte[] strSeed = null;
String col[] = {"ToyID", "ToySeed" ,"ToyMemo"};
String strToy = "ToyID=" + new Integer((int) ToyID).toString();
try{
cur = mTestDatabase.query(TABLE_SEED, col, strToy, null, null, null, null);
cur.moveToFirst();
strSeed = cur.getBlob(1);
} catch (SQLException ex) {
}
if (cur !=null) cur.close;
Log.i("testSeedDB", strToy);
return strSeed;
}
// 数据操作的基础类,作为数据操作的内嵌子类
public class testDBHelper extends SQLiteOpenHelper {
public testDBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public voidonCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
} // end of testDBHelper
}// 读文件到 BYTE 来自网上未验证
//http://www.a3gs.com/BookViews.asp?InfoID=2865&ClassID=935
导入包:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
相关推荐
yxlnum 2020-03-16
88580090 2015-09-12
linkincsdn 2015-10-30
yexiekai 2012-05-26
lerdor 2011-09-01
liangkaiping0 2011-07-13
silenter00 2011-04-20
mayongzhancsdn 2016-11-10
AndrewYuan 2013-03-19
zjxbjh 2012-04-25
飞到大连 2014-08-07
guoxiaolong00 2012-11-24
tonygsw 2010-11-21
yz0 2016-07-07
Imperva 2014-11-24