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

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

[复制链接]

尚未签到

发表于 2016-12-1 08:05:09 | 显示全部楼层 |阅读模式
原文地址,转载请说明:http://blog.sina.com.cn/s/blog_539070ad0100nesa.html


   Android开发时用到二进制数据(也可以理解为BYTE数组)的SQLite存取,可能会有人对存取如mp3、图片类文件困惑,其实p3、图片类文件读到内存就可理解为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;
 

<span styl

运维网声明 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-307864-1-1.html 上篇帖子: FLEX实践—AIR连接SQLITE查询结果数据跟踪 下篇帖子: 转:Android SQLite 数据库 存取 BLOB 二进制 文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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