日期:2014-05-16  浏览次数:20487 次

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 vo