`
zhenping
  • 浏览: 83624 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Android 操作SQLite数据库(初步)-在程序中删除数据库

 
阅读更多

特别强调一下,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>


分享到:
评论

相关推荐

    安卓SQLite数据库相关-安卓Androidsqlite万能数据库.rar

    标签"SQLite数据库"进一步明确了这个压缩包的核心内容,主要关注的是SQLite数据库在安卓应用中的实现和操作。 在安卓系统中,SQLite数据库通常用于存储结构化的数据,如用户信息、设置、游戏进度等。使用SQLite...

    Android中SQLite数据库查看工具

    它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 ...

    android连接SQLite数据库源码-IT计算机-毕业设计.zip

    本项目“android连接SQLite数据库源码”是一个针对IT计算机专业学生的毕业设计示例,旨在帮助学生理解和掌握如何在Android平台上与SQLite数据库进行交互。 首先,我们需要了解Android中与SQLite数据库打交道的基本...

    Android实验报告Sqlite数据库操作.pdf

    Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...

    安卓SQLite数据库相关-实现对没填的工时记录操作android数据库sqlite.zip

    本项目“安卓SQLite数据库相关-实现对没填的工时记录操作android数据库sqlite.zip”主要探讨了如何在Android应用中使用SQLite数据库来管理工时记录。 SQLite数据库在Android中被广泛用于数据持久化,它允许开发者...

    安卓SQLite数据库相关-android读取本地.db文件实现不变数据本地化.rar

    在Android应用开发中,SQLite数据库是一个重要的组成部分,用于存储应用程序中的结构化数据。SQLite是一个轻量级的关系型数据库,它不需要单独的服务器进程,并且可以嵌入到应用程序中,非常适合移动设备上的数据...

    安卓SQLite数据库相关-在Android平台上动态执行SQL语句.rar

    SQLite数据库是一个轻量级的关系型数据库管理系统,它被嵌入到Android系统中,允许开发者在应用内部创建、查询、更新和删除数据。以下是一些关键知识点: 1. **SQLiteOpenHelper**: 这是Android提供的一个基类,...

    android对sqlite数据库的操作

    本篇文章将深入探讨如何在Android中进行SQLite数据库的操作。 一、SQLite数据库简介 SQLite是一个开源的嵌入式数据库系统,它不需要单独的服务器进程,并且全部数据库都存储在一个文件中。在Android中,每个应用都...

    Android操作SQLite数据库Demo

    这个"Android操作SQLite数据库Demo"将展示如何在Android环境中有效地利用SQLite进行数据管理。以下是一些关键知识点: 1. **SQLiteOpenHelper**: Android提供了`SQLiteOpenHelper`类来帮助我们管理SQLite数据库,...

    android 操作sqlite数据库源码

    通过这个源码实例,开发者可以学习到如何在Android应用中有效地操作SQLite数据库,理解基本的数据操作流程以及如何处理数据库版本变更。这不仅对于初学者来说是宝贵的实践资源,对于经验丰富的开发者也有助于复习和...

    Android数据库SQLite详解

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...

    android 的sqlite数据库加密实现

    本篇文章将深入探讨如何在Android中实现SQLite数据库的加密。 一、SQLite加密的必要性 1. 数据隐私:在移动设备上,用户数据可能包含个人隐私,如登录凭据、通讯录等,加密可以防止数据泄露。 2. 应用安全:防止...

    Android-实验报告-Sqlite-数据库操作.docx

    这篇实验报告主要涉及了在Android平台上使用SQLite数据库进行文件操作和数据管理的相关知识。以下是详细的解释: 1. **SQLite数据库**:SQLite是一个轻量级的、嵌入式的关系型数据库,广泛应用于移动设备如Android...

    安卓SQLite数据库相关-Android安全简单的键值对数据存储库源码.rar

    在Android应用开发中,SQLite数据库是一种常用的数据存储方式,它为应用程序提供了轻量级、可靠的本地数据存储。这个"安卓SQLite数据库相关-Android安全简单的键值对数据存储库源码.rar"压缩包文件包含了用于创建一...

    android操作数据库Sqlite源代码

    SQLite被集成在Android操作系统中,允许开发者在应用程序中存储和管理数据。本主题主要探讨如何通过源代码来实现对SQLite数据库的增、删、查、改(CRUD)操作。 首先,SQLiteAdmin.rar可能包含一个用于管理SQLite...

    安卓SQLite数据库相关-Android学习之数据存储.rar

    在Android应用开发中,SQLite数据库是一个重要的组成部分,用于存储应用程序中的结构化数据。SQLite是一个轻量级的关系型数据库,它不需要单独的服务器进程,而是直接嵌入到应用程序中,为开发者提供了灵活的数据...

    安卓SQLite数据库相关-Android源码-sqlbrite.rar

    在Android中,每个应用程序都有自己的SQLite数据库,通过ContentResolver和ContentProvider接口进行操作。开发者可以通过SQLiteOpenHelper类创建和升级数据库,以及通过SQL语句执行查询、插入、更新和删除操作。 ...

    安卓SQLite数据库相关-Yahoo开源的SQLite数据库框架.rar

    Yahoo 开源的 SQLite 数据库框架,旨在简化 Android 应用中的 SQLite 数据库操作,提供更高级别的抽象层,帮助开发者更便捷地进行数据管理。这个框架可能包含了以下关键组件和特性: 1. **数据库帮助类(Database ...

    Android-在浏览器管理中Sqlite数据库

    本文将深入探讨如何在Android的浏览器环境中管理和操作SQLite数据库。 首先,理解SQLite数据库的基本概念至关重要。SQLite是一个嵌入式SQL数据库,它不需要单独的服务器进程,并且可以被应用程序直接访问。它支持...

    【Android】Sqlite数据库增删改查(修改版)

    在这个“【Android】Sqlite数据库增删改查(修改版)”项目中,我们将探讨如何在Android应用中使用SQLite进行基本的数据操作:增加、删除、修改和查询。 首先,我们要了解SQLite在Android中的集成。每个Android应用...

Global site tag (gtag.js) - Google Analytics