【在android中拥有sqlite数据库】努力尽今夕,少年犹可夸。这篇文章主要讲述在android中拥有sqlite数据库相关的知识,希望能为你提供帮助。
- package com.package.name;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import android.content.Context;
- import android.database.Cursor;
- import android.database.SQLException;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteException;
- import android.database.sqlite.SQLiteOpenHelper;
- public class DatabaseHelper extends SQLiteOpenHelper {
- private static String DB_PATH = " /data/data/com.hotel.directory/databases/" ;
- private static String DB_NAME = " dbname.db" ;
- private SQLiteDatabase db;
- private final Context myContext;
- public DatabaseHelper( Context context) {
- super( context, DB_NAME, null, 1) ;
- this.myContext = context;
- }
- /**
- * Creates a empty database on the system and rewrites it with your own database.
- */
- public void createDatabase( ) throws IOException {
- boolean dbExist = checkDataBase( ) ;
- if( dbExist) {
- //do nothing - database already exist
- } else {
- //By calling this method and empty database will be created into the default system path
- //of your application so we are gonna be able to overwrite that database with our database.
- this.getReadableDatabase( ) ;
- try {
- copyDataBase( ) ;
- } catch( IOException e) {
- throw new Error( " Error copying database" ) ;
- }
- }
- }
- /**
- * Check if the database already exist to avoid re-copying the file each time you open the application.
- * @return true if it exists, false if it dosen't
- */
- private boolean checkDataBase( ) {
- SQLiteDatabase checkDB = null;
- try {
- String myPath = DB_PATH + DB_NAME;
- checkDB = SQLiteDatabase.openDatabase( myPath, null, SQLiteDatabase.OPEN_READONLY) ;
- } catch ( SQLiteException e) {
- }
- if( checkDB != null) {
- checkDB.close( ) ;
- }
- return checkDB != null ? true : false;
- }
- /**
- * Copies your database from your local assets-folder to the just created empty database in the
- * system folder, from where it can be accessed and handled.
- * This is done by transfering bytestream.
- */
- private void copyDataBase( ) throws IOException {
- //Open your local db as the input stream
- InputStream myInput = myContext.getAssets( ) .open( DB_NAME) ;
- // Path to the just created empty db
- String outFileName = DB_PATH + DB_NAME;
- // Open the empty db as the output stream
- OutputStream myOutput = new FileOutputStream( outFileName) ;
- //transfer bytes from the inputfile to the outputfile
- byte[ ] buffer = new byte[ 1024] ;
- int length;
- while( ( length = myInput.read( buffer) ) > 0) {
- myOutput.write( buffer, 0, length) ;
- }
- // Close the streams
- myOutput.flush( ) ;
- myOutput.close( ) ;
- myInput.close( ) ;
- }
- public void openDataBase( ) throws SQLException {
- //Open the database
- String myPath = DB_PATH + DB_NAME;
- db = SQLiteDatabase.openDatabase( myPath, null, SQLiteDatabase.OPEN_READONLY) ;
- }
- @Override
- public synchronized void close( ) {
- if( db != null)
- db.close( ) ;
- super.close( ) ;
- }
- @Override
- public void onCreate( SQLiteDatabase db) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onUpgrade( SQLiteDatabase db, int oldVersion, int newVersion) {
- // TODO Auto-generated method stub
- }
- }
推荐阅读
- 从apprequest facebook api请求数据
- Android(谷歌地图标记)
- Android(以编程方式删除标题/通知栏)
- 将Apple.plist文件从XML/binary转换为
- Android简单警报
- PhoneGap项目的Android元视口标记
- 一键构建PhoneGap构建到Android
- Android检查服务是否正在运行
- 钛Appcelerator zipfile模块(适用于1.8的提取方法)