`

Android中Sqlite数据库的使用

阅读更多
依照习惯还是通过一个例子来熟悉,我只所以都把例子写在这里方便我以后查找使用,也可以共享给大家学习,如果大家有什么好的网址和Demo也可以告诉我,谢谢!共同进步!!!
DatabaseActivity.java启动类:
package com.example.Database;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class DatabaseActivity extends Activity implements
		Button.OnClickListener {

	DBAdapter db_ex;

	long id;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 通过此类来进行数据库的相关操作
		db_ex = new DBAdapter(this, Constants.DB_NAME, Constants.DB_VERSION);

		Button add_btn = (Button) findViewById(R.id.Button01);
		Button cancel_btn = (Button) findViewById(R.id.Button02);
		Button update_btn = (Button) findViewById(R.id.Button03);
		Button check_btn = (Button) findViewById(R.id.Button04);

		add_btn.setOnClickListener(this);
		cancel_btn.setOnClickListener(this);
		update_btn.setOnClickListener(this);
		check_btn.setOnClickListener(this);

	}

	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.Button01:
			// ---add 2 titles---
			// 每次操作数据库都要调用此函数open()
			db_ex.open();
			id = db_ex.insertTitle("1111111", "Android book", "Jim");
			id = db_ex.insertTitle("2222222", "Iphone book", "Edison");

			// ---获取所有标题---
			Cursor c = db_ex.getAllTitles();

			if (c.moveToFirst()) {
				do {
					DisplayTitle(c);
				} while (c.moveToNext());
			}
			db_ex.close();
			break;
		case R.id.Button02:
			// 删除一行数据
			db_ex.open();
			if (db_ex.deleteTitle(1)) {
				Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG)
						.show();
			} else {
				Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG)
						.show();
			}

			db_ex.close();
			break;
		case R.id.Button03:
			// 更新一条数据
			db_ex.open();
			if (db_ex.updateTitle(1, "1234567", "Programmer's Reference",
					"Wrox Press")) {
				Toast.makeText(this, "Update successful.", Toast.LENGTH_LONG)
						.show();
			}

			else {
				Toast.makeText(this, "Update failed.", Toast.LENGTH_LONG)
						.show();
			}

			// 将更新后的数据显示出来
			Cursor c1 = db_ex.getTitle(1);
			if (c1.moveToFirst()) {
				DisplayTitle(c1);
			} else {
				Toast.makeText(this, "No title found", Toast.LENGTH_LONG)
						.show();
			}

			db_ex.close();
			break;
		case R.id.Button04:

			// 检索一条特定的数据

			db_ex.open();
			Cursor c2 = db_ex.getTitle(2);
			if (c2.moveToFirst()) {
				DisplayTitle(c2);
			} else {
				Toast.makeText(this, "No title found", Toast.LENGTH_LONG)
						.show();
			}
			db_ex.close();

			break;
		default:
			break;

		}
	}

	// 显示数据库中的所有数据
	public void DisplayTitle(Cursor c) {
		Toast.makeText(
				this,
				"id: " + c.getString(0) + "\n" + "ISBN: " + c.getString(1)
						+ "\n" + "TITLE: " + c.getString(2) + "\n"
						+ "PUBLISHER: " + c.getString(3), Toast.LENGTH_LONG)
				.show();
	}

}

2. DatabaseHelper.java这个类管理数据库的创建和版本管理
package com.example.Database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

//A helper class to manage database creation and version management
public class DatabaseHelper extends SQLiteOpenHelper {
	private static final String TAG = "DBAdapter";

	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	@Override
	// 只有在第一次创建数据库的时候调用
	// Called when the database is created for the first time
	public void onCreate(SQLiteDatabase db) {
		// Execute a single SQL statement that is not a query
		db.execSQL(Constants.DATABASE_CREATE);
		Log.i("", "execSQL");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
				+ newVersion + ", which will destroy all old data");
		db.execSQL("DROP TABLE IF EXISTS titles");
		onCreate(db);
	}
}


3. DBAdapter.java是对数据库的增,删,改,查的操作都在这个类里面
package com.example.Database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class DBAdapter {
	DatabaseHelper DBHelper;
	SQLiteDatabase db;

	public DBAdapter(Context ctx, String base_name, int version) {
		DBHelper = new DatabaseHelper(ctx, base_name, null, version);
	}

	// 创建或打开一个读写数据库,每次写数据库都要调用此方法
	// 不在使用时,需调用close()
	public DBAdapter open() throws SQLException {
		// ---打开数据库---    
		db = DBHelper.getWritableDatabase();
		Log.i("", "getWritableDatabase");
		return this;
	}

	public void close() {
		// ---关闭数据库---
		DBHelper.close();
	}

	// ---向数据库中插入一个标题---   
	public long insertTitle(String isbn, String title, String publisher) {
		ContentValues initialValues = new ContentValues();
		initialValues.put(Constants.KEY_ISBN, isbn);
		initialValues.put(Constants.KEY_TITLE, title);
		initialValues.put(Constants.KEY_PUBLISHER, publisher);
		return db.insert(Constants.TABLE_NAME, Constants.KEY_ROWID,
				initialValues);
	}

	// ---删除一个指定标题---   
	public boolean deleteTitle(long rowId) {
		return db.delete(Constants.TABLE_NAME, Constants.KEY_ROWID + "="
				+ rowId, null) > 0;
	}

	// ---检索所有标题---
	public Cursor getAllTitles() {
		return db.query(Constants.TABLE_NAME, new String[] {
				Constants.KEY_ROWID, Constants.KEY_ISBN, Constants.KEY_TITLE,
				Constants.KEY_PUBLISHER }, null, null, null, null, null);
	}

	// ---检索一个指定标题---  
	public Cursor getTitle(long rowId) throws SQLException {
		Cursor mCursor = db.query(true, Constants.TABLE_NAME, new String[] {
				Constants.KEY_ROWID, Constants.KEY_ISBN, Constants.KEY_TITLE,
				Constants.KEY_PUBLISHER }, Constants.KEY_ROWID + "=" + rowId,
				null, null, null, null, null);
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	// ---更新一个标题---   
	public boolean updateTitle(long rowId, String isbn, String title,
			String publisher) {
		ContentValues args = new ContentValues();
		args.put(Constants.KEY_ISBN, isbn);
		args.put(Constants.KEY_TITLE, title);

		args.put(Constants.KEY_PUBLISHER, publisher);
		return db.update(Constants.TABLE_NAME, args, Constants.KEY_ROWID + "="
				+ rowId, null) > 0;
	}

}



4.Constants.java文件主要是一些常量的保存:
package com.example.Database;

public class Constants {
	public final static String DB_NAME = "dne_db";
	public final static int DB_VERSION = 1;

	public static final String TABLE_NAME = "titles";
	public static final String KEY_ROWID = "_id";
	public static final String KEY_ISBN = "isbn";
	public static final String KEY_TITLE = "title";
	public static final String KEY_PUBLISHER = "publisher";

	public static final String DATABASE_CREATE = "create table IF NOT EXISTS "
			+ TABLE_NAME + " (_id integer primary key autoincrement, "
			+ "isbn text, title text not null, " + "publisher text not null);";
}


5.最后是main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />


	<Button android:text="add one row" android:id="@+id/Button01"
		android:layout_width="150dp" 
		android:layout_height="wrap_content"></Button>
		
	<Button android:text="delete one row" android:id="@+id/Button02"
		android:layout_width="150dp" 
		android:layout_height="wrap_content"></Button>
		
	<Button android:text="update one row" android:id="@+id/Button03"
		android:layout_width="150dp" 
		android:layout_height="wrap_content"></Button>
		
	<Button android:text="select one row" android:id="@+id/Button04"
		android:layout_width="150dp" 
		android:layout_height="wrap_content"></Button>
		
</LinearLayout>

分享到:
评论

相关推荐

    Android中SQLite数据库查看工具

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

    Android Studio SQLite数据库使用

    SQLiteOpenHelper和SQLiteDatabase是Android Studio中使用SQLite数据库的核心组件,ContentValue和Cursor是辅助工具。通过使用这些组件和工具,可以轻松地在Android Studio中实现数据库的创建、读写和管理。

    android 的sqlite数据库加密实现

    在Android应用开发中,SQLite是一个...通过以上介绍,我们了解了在Android中使用SQLCipher实现SQLite数据库加密的重要性、方法以及注意事项。在实际项目中,可以根据需求选择适合的加密策略,确保应用的数据安全性。

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

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

    android中sqlite数据库的创建以及增删改查

    资源名称:android中sqlite数据库的创建以及增删改查 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Android数据库SQLite详解

    - **加密**: 可以使用第三方库对SQLite数据库进行加密,增强数据安全性。 - **索引**: 为经常用于查询的字段创建索引,提高查询速度。 - **批量操作**: 避免频繁的单条数据操作,尽量使用批处理来提升性能。 - **...

    Android使用SQLite数据库进行增删改查详细案例

    本案例将详细介绍如何在Android应用中使用SQLite进行增(Create)、删(Delete)、改(Update)和查(Read)操作。 1. **创建SQLite数据库** 在Android中,我们需要创建一个继承自`SQLiteOpenHelper`的类,这个类...

    android对sqlite数据库的操作

    在Android开发中,SQLite数据库是默认的轻量级数据库,用于存储应用的数据。SQLite支持标准的关系型数据库特性,如SQL语法、事务处理等,且它体积小、无服务器、文件化,非常适合移动设备使用。本篇文章将深入探讨...

    android读取sqlite数据库的数据并用listview显示

    本教程将详述如何在Android应用中读取SQLite数据库的数据并利用ListView进行展示。 首先,我们需要创建SQLite数据库。在Android中,我们通常通过扩展SQLiteOpenHelper类来实现,这个类帮助我们管理数据库的创建和...

    Android 之 SQLite数据库的使用

    接下来,我们将深入探讨如何在Android中使用SQLite数据库。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过继承`SQLiteOpenHelper`类来实现。这个类提供了创建、升级和打开数据库的方法。例如,...

    Android之Sqlite数据库操作实例

    本实例将深入探讨如何在Android中使用SQLite数据库进行基本的操作,包括创建数据库、创建表、插入数据、查询数据以及更新和删除数据。 首先,我们来了解SQLite在Android中的使用基础。Android系统会为每个应用程序...

    Android 绿豆通讯录【SQLite数据库】

     Android 绿豆通讯录( SQLite数据库 + ListView数据展示控件 ) https://blog.csdn.net/weixin_44949135/article/details/106029404 采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条...

    Android源码——数据库SQLite.zip

    这个压缩包文件"Android源码——数据库SQLite.zip"可能包含了关于Android中SQLite数据库的源码分析、使用示例以及相关的图像资源,如1-120912223R80-L.png,可能用于解释或展示SQLite在Android中的工作原理。...

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

    总之,Android应用中SQLite数据库的管理涉及多个方面,包括创建和更新数据库、使用Web服务进行远程管理以及关注安全性和性能。开发者需要熟练掌握SQLite的基础知识,同时了解如何利用各种工具和策略来适应不同的需求...

    Android操作SQLite数据库Demo

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

    Android 使用SQLite数据库

    在Android开发中,SQLite数据库是应用内部数据存储的主要方式之一,尤其适合小规模的数据存储。以下是关于Android使用SQLite数据库的一些核心知识点: 1. **SQLiteOpenHelper**:这是Android SDK提供了一个用于创建...

    实验项目报告第7章.doc android studio SQLite数据库的创建、增删改查操作 SharedPreferen

    - 使用 `SQLiteOpenHelper` 类,我们可以在 Android 应用程序中创建和管理 SQLite 数据库。我们需要继承这个类并重写 `onCreate()` 和 `onUpgrade()` 方法。`onCreate()` 在数据库首次创建时调用,用于创建表结构;...

    Android_SQLite数据库使用范例

    本篇文章将详细探讨如何在Android中使用SQLite数据库,通过具体的使用范例进行讲解。 一、SQLite数据库的创建与初始化 在Android中,SQLite数据库通常是通过`SQLiteOpenHelper`类来创建和管理的。首先,我们需要...

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

    在安卓开发中,SQLite是一个非常重要的...总之,这个压缩包“安卓Android sqlite万能数据库”可能包含了实现上述功能的各种示例和工具,开发者可以通过学习和研究,掌握在安卓应用中使用SQLite数据库的技巧和最佳实践。

Global site tag (gtag.js) - Google Analytics