设为首页 收藏本站
查看: 1176|回复: 0

[经验分享] 转:Android SQLite 数据库 存取 BLOB 二进制 文件

[复制链接]

尚未签到

发表于 2016-12-1 08:06:45 | 显示全部楼层 |阅读模式
  
原文地址,转载请说明: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;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307865-1-1.html 上篇帖子: 【转】Android SQLite 数据库 存取 BLOB 二进制 文件 下篇帖子: SQLite指南(0) 表和索引的文件存储结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表