特别强调一下,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. 自定义SeekBarPreference控件(老外出品,直接在preferences文件中
  2. Android NullPointerException解决方法(空指针异常)
  3. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
  4. Android刷Root方法,zergRush,Odin3+CWM(ClockworkMod recovery)
  5. Android如何使用so文件和Android studio中导入so
  6. [Android]实现静默安装APK的两种方法
  7. Android中ScrollView隐藏进度条方法
  8. android通过php连接mysql数据库!!!!
  9. android读取plist文件

随机推荐

  1. Android中用GridView实现九宫格
  2. 浅析android中的Bundle类
  3. Android碎片化机制
  4. 在ubuntu下搭建Android的开发环境
  5. 技术/源码/开源网站
  6. Android培训班(18)
  7. Android 混合H5开发两种模式
  8. android studio,Gradle配置: RxJava失败
  9. Android studio添加jar包
  10. Android 获取屏幕尺寸