特别强调一下,Android是怎么删除数据库的,因为SQLite没有提供drop database XX的指令,所以我现在是按文件来删除数据库
刚刚学习Android关于数据库的操作,现在就将我学习的这点知识汇总一下,高手绕道哈。
关于数据库操作无非就是增删改查,下面就将这几个模块实现了。
JAVA code
package cn.qiuzhping.study;
import java.io.File;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SQLiteStudy extends Activity {
private Button btn_create = null;
private Button btn_update = null;
private Button btn_insert = null;
private Button btn_query = null;
private Button btn_delete = null;
// private SQLiteUtil sqliteUtil = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlite_study);
btn_create = (Button) findViewById(R.id.btn_create);
btn_create.setOnClickListener(new Btn_Create());
btn_update = (Button) findViewById(R.id.btn_update);
btn_update.setOnClickListener(new Btn_Update());
btn_insert = (Button) findViewById(R.id.btn_insert);
btn_insert.setOnClickListener(new Btn_Insert());
btn_query = (Button) findViewById(R.id.btn_query);
btn_query.setOnClickListener(new Btn_Query());
btn_delete = (Button) findViewById(R.id.btn_delete);
btn_delete.setOnClickListener(new Btn_Delete());
}
private class SQLiteUtil extends SQLiteOpenHelper {
private static final int VERSION = 1;// 正数
private String sql = "create table user(id int,name vachar(20))";
public SQLiteUtil(Context context, String name, CursorFactory factory,
int version) {
// 从左到右依次是context是Activity、name数据库表名、factory可选的数据库游标工厂类,
// 当查询(query)被提交时,该对象会被调用来实例化一个游标。默认为null。version是数据版本号
super(context, name, factory, version);
}
public SQLiteUtil(Context context, String name, int version) {// 调用4个参数的构造方法
this(context, name, null, VERSION);
}
public SQLiteUtil(Context context, String name) {// 调用3个参数的构造方法
this(context, name, VERSION);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// 建立数据库
Log.i("SQLiteUtil onCreate", "建立数据库");
arg0.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
Log.i("SQLiteUtil onUpgrade", "更新数据库!!");
// arg0.execSQL(sql);
}
}
public void deleteFile(File file) {
if (file.exists()) { // 判断文件是否存在
if (file.isFile()) { // 判断是否是文件
// 设置属性:让文件可执行,可读,可写
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
file.delete(); // delete()方法
} else if (file.isDirectory()) { // 否则如果它是一个目录
File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
this.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
}
}
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
file.delete();
Log.i("deleteFile", file.getName() + "成功删除!!");
} else {
Log.i("deleteFile", file.getName() + "不存在!!!");
}
}
class Btn_Delete implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
Log.i("Btn_Delete", "delete = " + db.delete("user", null, null));
File file1 = new File("/data/data/cn.qiuzhping.study/databases/testDB1");
deleteFile(file1);
File file2 = new File("/data/data/cn.qiuzhping.study/databases/testDB1-journal");
deleteFile(file2);
}
}
class Btn_Create implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getReadableDatabase();
}
}
class Btn_Update implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhansan");
Log.i("Btn_Update ",
"update="
+ db.update("user", values, "id=?",
new String[] { "1" }));
}
}
class Btn_Insert implements OnClickListener {
@Override
public void onClick(View arg0) {
ContentValues values = new ContentValues();
for (int i = 1; i <= 20;) {
values.put("id", i);
values.put("name", "qiuzhping" + i);
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this,
"testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
Log.i("Btn_Insert",
"insert = " + db.insert("user", null, values));
i++;
}
}
}
class Btn_Query implements OnClickListener {
@Override
public void onClick(View arg0) {
ContentValues values = new ContentValues();
values.put("name", "qiuzhping");
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getReadableDatabase();
Cursor cursor = db.query("user", new String[] { "id", "name" },
null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(0);// 获取ID
String name = cursor.getString(1);// 获取name
Log.i("Btn_Query", "id = " + id + " name = " + name);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.sqlite_study, menu);
return true;
}
}
xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SQLiteStudy" >
<Button
android:id="@+id/btn_create"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建数据库" />
<Button
android:id="@+id/btn_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_create"
android:text="更新" />
<Button
android:id="@+id/btn_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_update"
android:text="插入" />
<Button
android:id="@+id/btn_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_insert"
android:text="查询" />
<Button
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_query"
android:text="删除数据库" />
</RelativeLayout>