文章纯属自己做笔记,可能调理会有点乱。。。
要使用数据库当然首先我们要创建这个数据库,一般来说我们使用SQLiteOpenHelper来帮助我们创建数据库。
从官网介绍:
SQLiteOpenHelper A helper class to manage database creation and version management.
也可以看出它主要是来创建数据库库和进行版本管理的。
public class MyDateBaseHelper extends SQLiteOpenHelper {
public MyDateBaseHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table table1(_id integer primary key autoincrement," +
"COLUMN1,COLUMN2)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("更新" + oldVersion + "to" + newVersion);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDateBaseHelper mMyDateBaseHelp = new MyDateBaseHelper(this, "database1.db3", null, 1);
SQLiteDatabase sqLiteDatabase = mMyDateBaseHelp.getReadableDatabase();
}
顺便说下getWritableDatabase()和getReadableDatabase()的区别,其实只要数据库磁盘空间不满(查了下好像在理论上,一个数据库文件可以有2TB,没去具体求证。。),它俩是一样的,都是以读写方式打开数据库,满了后,用getWritableDatabase()打开会出错,getReadableDatabase()会变成只读方式打开。
眼见为实,我们可以通过Root Explorer去看下我们创建的数据库,如下图所示(查看路径图上也有):
下面我们可以通过下面这条语句向表table1中增加些数据:
sqLiteDatabase.execSQL("insert into table1 values(null,?,?)",new Integer[]{1,2});
我们可以通过SQLite Editor查看到增加的数据,如下图 :
其他SQL语句我就不一一展开说了,大家可以参考下这篇博客:
http://keeponmoving.iteye.com/blog/1487773
大家如果想把自己数据库中的数据导出的话,推荐OpenCSV,可以把数据导出成.csv格式,我的是opencsv-1.7,下面是我写的一个导出数据的类:
public class ExportData {
private SQLiteDatabase mSQLiteDatabase;
private File file;
ExportData(SQLiteDatabase sqLiteDatabase) {
mSQLiteDatabase = sqLiteDatabase;
}
public void exportDatabaseToCSV() {
//导出数据保存的文件夹
File exportDir = new File(Environment.getExternalStorageDirectory().getPath(),
"/zhanExportData");
if (!exportDir.exists()) {
System.out.println(exportDir.mkdir());
}
//导出数据的文件名
file = new File(exportDir, "myData.csv");
try {
CSVWriter csvWriter = new CSVWriter(new FileWriter(file));
Cursor cursor = mSQLiteDatabase.rawQuery(
"select * from table1", null
);
while (cursor.moveToNext()) {
//可以在这里增加数据库中数据的列数
String string[] = {cursor.getString(0), cursor.getString(1),
cursor.getString(2)};
csvWriter.writeNext(string);
}
csvWriter.close();
cursor.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getFilePath() {
return file.getPath();
}
}