zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

android 同时打开两个sqlite database db

AndroidDatabaseSQLite 打开 两个 同时 DB
2023-09-14 09:08:28 时间
1,数据库类

package com.example.testdb;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {

    // DB info
    public static String MAIN_DATABASE_NAME = "Bowers.db";
    public static final String OFFSET_DATABASE_NAME = "BowersOffset.db";
    public static final int MAIN_DATABASE_VERSION = 1;
    public static final int OFFSET_DATABASE_VERSION = 1;

    // database control
    private DatabaseHelper mDbHelper;
    private  SQLiteDatabase mDb;
    private  Context mCtx;
    public String currentDBName;
    public int currentDBVer;

    private  class DatabaseHelper extends SQLiteOpenHelper {
        DatabaseHelper(Context context, String dbname, int dbversion) {
            super(context, dbname, null, dbversion);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.e("xxxx","onCreate");
            db.execSQL("CREATE TABLE `room` (`roomName` VARCHAR , `clazzId` INTEGER DEFAULT 0 , `createTime` BIGINT , `roomId` BIGINT , `check_code` BIGINT , `roomType` INTEGER , PRIMARY KEY (`roomId`) );");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.e("xxxx","onCreate");            
        }
    }

    public DBAdapter(Context ctx) {
        mCtx = ctx;
    }

    public DBAdapter open(String dbname, int dbversion) throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx, dbname, dbversion);
        mDb = mDbHelper.getWritableDatabase();
        
        currentDBName = dbname;
        currentDBVer=dbversion;
        
        return this;
    }
    
    public void insert() {
        mDb.execSQL("Replace into room(roomName, roomType ) values( '"+currentDBName+"',"+currentDBVer+");");
    }


    public void close() {
        mDbHelper.close();
    }

    //指定数据库文件路径方法打开数据库。
    static String MAIN_DB_PATH="/data/data/com.example.testdb/databases/";
    private static boolean checkDataBase(String dbname) {
        SQLiteDatabase checkDB = null;
        boolean exist = false;
        try {
            String db = MAIN_DB_PATH + dbname;
            checkDB = SQLiteDatabase.openDatabase(db, null, SQLiteDatabase.OPEN_READONLY);
        } catch (SQLiteException e) {
            Log.v("db log", "database does't exist");
        }

        if (checkDB != null) {
            exist = true;
            checkDB.close();
        }
        return exist;
    }

    public  void openDataBase(String dbname) throws SQLException {
        String dbPath = MAIN_DB_PATH + dbname;
        mDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
    }

}

2,activity

package com.example.testdb;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        DBAdapter setupDBHelper = new DBAdapter(this);
        setupDBHelper.open(DBAdapter.MAIN_DATABASE_NAME, DBAdapter.MAIN_DATABASE_VERSION);
        setupDBHelper.insert();

        DBAdapter offsetDBHelper = new DBAdapter(this);
        offsetDBHelper.open(DBAdapter.OFFSET_DATABASE_NAME, DBAdapter.OFFSET_DATABASE_VERSION);
        offsetDBHelper.insert();
    }

    
    
    //The following is useless.
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

 

3,manifest xml

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testdb"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.testdb.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>