
1.把.db文件放到res/raw下
插个题外话,关于sqlite,可以用Navicat这个图形工具建好我们的数据库,即可得到我们的.db数据库文件了。
2.写数据库管理类DBManager.java
package com.CSSystem.dao;import java.io.file;import java.io.fileNotFoundException;import java.io.fileOutputStream;import java.io.IOException;import java.io.inputStream;import androID.content.ContentValues;import androID.content.Context;import androID.database.Cursor;import androID.database.sqlException;import androID.database.sqlite.sqliteDatabase;import androID.os.Environment;import androID.util.Log;import androID.Widget.Toast;import com.CSSystem.activity.ObjKey;import com.CSSystem.activity.R;import com.CSSystem.domain.Selected;import com.CSSystem.domain.Student;import com.CSSystem.domain.User;public class DBManager { private final int BUFFER_SIZE = 400000; public static final String DB_name = "CSSystem.db"; //保存的数据库文件名public static final String PACKAGE_name = "com.CSSystem.activity"; public static final String DB_PATH = "/data" + Environment.getDataDirectory().getabsolutePath() + "/" + PACKAGE_name; //在手机里存放数据库的位置(/data/data/com.CSSystem.activity/CSSystem.db) private sqliteDatabase database; private Context context; public DBManager(Context context) { this.context = context; } public sqliteDatabase getDatabase() {return database;}public voID setDatabase(sqliteDatabase database) {this.database = database;}public voID openDatabase() { System.out.println(DB_PATH + "/" + DB_name); this.database = this.openDatabase(DB_PATH + "/" + DB_name); } private sqliteDatabase openDatabase(String dbfile) { try { if (!(new file(dbfile).exists())) { //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库 inputStream is = this.context.getResources().openRawResource( R.raw.CSSystem); //欲导入的数据库 fileOutputStream fos = new fileOutputStream(dbfile); byte[] buffer = new byte[BUFFER_SIZE]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer,count); } fos.close(); is.close(); } sqliteDatabase db = sqliteDatabase.openorCreateDatabase(dbfile,null); return db; } catch (fileNotFoundException e) { Log.e("Database","file not found"); e.printstacktrace(); } catch (IOException e) { Log.e("Database","IO exception"); e.printstacktrace(); } return null; } public voID closeDatabase() { this.database.close(); }} 3.在程序第一个Activity实例化一个DBManager对象,然后对其执行openDatabase()方法就可以完成导入了。
package com.CSSystem.activity;import androID.app.Activity;import androID.app.AlertDialog;import androID.content.DialogInterface;import androID.content.Intent;import androID.net.Uri;import androID.os.Bundle;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.EditText;import com.CSSystem.dao.DBManager;import com.CSSystem.domain.User;import com.CSSystem.service.UserService;public class LoginActivity extends Activity { public DBManager dbHelper; private User u; private UserService us; private Intent intent; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_login); //首次执行导入.db文件dbHelper = new DBManager(this); dbHelper.openDatabase(); dbHelper.closeDatabase();……}} 1)可以把一些数据库的 *** 作写在DBManager类里,然后通过DBManager类的对象调用;
DBManager dbHelper = new DBManager(this);dbHelper.openDatabase();
2)可以再完成导入之后,通过一个sqliteDatabase类的对象打开数据库,并执行 *** 作。
sqliteDatabase database;database = sqliteDatabase.openorCreateDatabase(DBManager.DB_PATH + "/" + DBManager.DB_name,null);总结
以上是内存溢出为你收集整理的SQLite 通过.db文件导入已有数据全部内容,希望文章能够帮你解决SQLite 通过.db文件导入已有数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)