特别强调一下,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;@Overrideprotected 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);}@Overridepublic void onCreate(SQLiteDatabase arg0) {// 建立数据库Log.i("SQLiteUtil onCreate", "建立数据库");arg0.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {// TODO Auto-generated method stubLog.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 {@Overridepublic 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 {@Overridepublic void onClick(View arg0) {SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");SQLiteDatabase db = sqliteUtil.getReadableDatabase();}}class Btn_Update implements OnClickListener {@Overridepublic 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 {@Overridepublic 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 {@Overridepublic 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);// 获取IDString name = cursor.getString(1);// 获取nameLog.i("Btn_Query", "id = " + id + "  name = " + name);}}}@Overridepublic 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>



更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android中如何修改系统时间
  4. Android实现数据存储技术
  5. 0.[WP Developer体验Andriod开发]之从零安装配置Android(安卓)St
  6. 一个打通jni,java framework,application三层的练习
  7. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
  8. Android系统编译
  9. Android如何使用so文件和Android(安卓)studio中导入so

随机推荐

  1. RecyclerView不显示问题
  2. 解决Notification不显示问题支持Android(
  3. android拦截短信并屏蔽系统的Notificatio
  4. Android自定义控件
  5. android电池(四):电池 电量计(MAX17040)驱动
  6. Android初步笔记
  7. Android设置透明、半透明等效果
  8. Android中文API(141) —— GridLayout
  9. android自定义属性之format介绍
  10. Android(安卓)Ant的部署