日期:2014-05-16  浏览次数:20424 次

转: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