sqlite 数据类型 全面 :http://blog.csdn.net/jin868/article/details/5961263
SQLite3 - 文件锁和同步机制 :http://blog.csdn.net/lxfjsks/article/details/5997314
参考文章:
http://zhangfan822.iteye.com/blog/1883829
http://www.cnblogs.com/west-link/archive/2012/02/20/2358719.html
很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据。
1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时,用现成的sqlite的二进制文件进行直接copy到Android系统的数据库路径
package com.goldpalm.common.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.goldpalm.supervise.R;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
/**
* 用户获取SQLiteDatabase
*
* <br>
*
* <strong>
* app_info.db 数据库中含 t_city表
* </strong>
*
* @since 2014年11月25日 上午11:17:40
* @author sunny
*/
public class DBManager {
private static SQLiteDatabase database;
public static final String DATABASE_FILENAME = "app_info.db";
public static final String PACKAGE_NAME = "com.goldpalm.supervise";
public static final String DATABASE_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;
public static SQLiteDatabase openDatabase(Context context) {
try {
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File file = new File(databaseFilename);
if (!file.exists()) {
File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
dir.mkdirs();
}
InputStream is = context.getResources().openRawResource(R.raw.app_info);
FileOutputStream fos = new FileOutputStream(file);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return database;
} catch (Exception e) {
Log.e("DBManager", "创建数据库文件异常", e);
}
return null;
}
}
数据库文件的存放位置推荐:res/raw下