Sqlite使用

package com.android.test;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
	private Button rebuild_table;
	private Button delete_table;
	private Button insert_item;
	private Button delete_item;
	private Button query_items;
	private Button update_item;

	private TextView mTextView;

	private DatabaseHelper mOpenHelper;

	// 数据库名
	private static final String DATABASE_NAME = "myDiaryDb.db";
	// 数据库版本
	private static final int DATABASE_VERSION = 1;

	// 数据表名
	private static final String TABLE_NAME = "diary";

	private static final String ID = "tab_id";
	private static final String TITLE = "title";
	private static final String BODY = "body";

	/**
	 * SQLiteOpenHelper表示操作数据库文件的助手
	 * 
	 * @author u
	 * 
	 */
	private static class DatabaseHelper extends SQLiteOpenHelper {

		DatabaseHelper(Context context) {
			// 创建或者更新数据库
			// 第一个参数Context
			// 第二个参数表示数据库名称
			// 第三个参数表示CursorFactory对象
			// 第四个参数表示数据库的版本
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		/**
		 * 创建数据库时触发
		 */
		@Override
		public void onCreate(SQLiteDatabase db) {
			// 建表sql语句
			String sql = "CREATE TABLE " + TABLE_NAME + " (" + ID
					+ " text not null," + TITLE + " text not null, " + BODY
					+ " text not null " + ");";
			// 执行sql语句
			db.execSQL(sql);
		}

		/**
		 * 更新数据库时触发
		 */
		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		}
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initLayout();
		mOpenHelper = new DatabaseHelper(this);

	}

	private void initLayout() {
		rebuild_table = (Button) findViewById(R.id.rebuild_table);
		delete_table = (Button) findViewById(R.id.delete_table);
		insert_item = (Button) findViewById(R.id.insert_item);
		delete_item = (Button) findViewById(R.id.delete_item);
		query_items = (Button) findViewById(R.id.query_items);
		update_item = (Button) findViewById(R.id.update_item);

		mTextView = (TextView) findViewById(R.id.m_text_view);

		rebuild_table.setOnClickListener(this);
		delete_table.setOnClickListener(this);
		insert_item.setOnClickListener(this);
		delete_item.setOnClickListener(this);
		query_items.setOnClickListener(this);
		update_item.setOnClickListener(this);

	}

	/*
	 * 重新建立数据表
	 */
	private void createTable() {
		// 得到一个可写的数据库对象
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		// 建表语句
		String sql = "CREATE TABLE " + TABLE_NAME + " (" + ID + " text ,"
				+ TITLE + " text not null, " + BODY + " text not null " + ");";
		Log.i("sql", "create:" + sql);
		try {
			// 删除表,如果已经存在的话
			db.execSQL("DROP TABLE IF EXISTS diary");
			db.execSQL(sql);
			setTitle("数据表成功重建");
		} catch (SQLException e) {
			e.printStackTrace();
			setTitle("数据表重建错误");
		}
	}

	/*
	 * 删除数据表
	 */
	private void dropTable() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		String sql = "drop table " + TABLE_NAME;
		try {
			db.execSQL(sql);
			setTitle("数据表成功删除:" + sql);
		} catch (SQLException e) {
			setTitle("数据表删除错误");
		}
	}

	/*
	 * 插入两条数据
	 */
	private void insertItem() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		// 插入数据的sql语句
		String sql1 = "insert into " + TABLE_NAME + " (" + ID + ", " + TITLE
				+ ", " + BODY + ") values('001','title1', 'android的发展真是迅速啊');";
		String sql2 = "insert into " + TABLE_NAME + " (" + ID + ", " + TITLE
				+ ", " + BODY + ") values('002','title2', 'android的发展真是迅速啊');";
		Log.i("sql", "sql:" + sql1);
		try {
			db.execSQL(sql1);
			db.execSQL(sql2);

			// 用insert方法插入数据
			ContentValues values = new ContentValues();
			values.put(ID, "003");
			values.put(TITLE, "insert插入的标题");
			values.put(BODY, "insert插入的内容");
			// 第一个参数表示表名
			// 第二个参数表示允许为空的字段
			// 第三个参数表示插入的键值对对象
			db.insert(TABLE_NAME, null, values); // 插入成功返回的是行号
			setTitle("插入两条数据成功");
		} catch (SQLException e) {
			setTitle("插入两条数据失败");
		}
	}

	/*
	 * 删除其中的一条数据
	 */
	private void deleteItem() {
		try {
			SQLiteDatabase db = mOpenHelper.getWritableDatabase();
			// 第一个参数表示表名
			// 第二个参数表示删除的条件
			// 第三个参数表示条件值(对第二个参数中的?进行填充,并且都是以字符串的方式填充)
			db.delete(TABLE_NAME, "tab_id = '001' AND title = ?",
					new String[] { "title1" });
			setTitle("删除title为title1的一条记录");
		} catch (SQLException e) {

		}

	}

	/**
	 * 更新数据
	 */
	private void update() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put(TITLE, "新标题");
		values.put(BODY, "新修改数据,O(∩_∩O)~");
		// 第一个参数表示表名
		// 第二个参数表示更新的值(键值对对象)
		// 第三个参数表示where条件
		// 第四个参数表示where条件值
		db.update(TABLE_NAME, values, TITLE + " = ? AND " + ID + " = ?",
				new String[] { "title2", "002" });
	}

	/*
	 * 在屏幕的title区域显示当前数据表当中的数据的条数。
	 */
	private void showItems() {
		// 获取一个可读的数据库对象
		SQLiteDatabase db = mOpenHelper.getReadableDatabase();
		// 定义查询的字段
		String col[] = { ID, TITLE, BODY };
		// 第一个参数表示表名
		// 第二个参数表示查询的字段
		// 第三个参数表示where条件
		// 第四个参数表示where条件值
		// 第五个参数表示查询的group by条件
		// 第六个参数表示having条件
		// 第七个参数表示order by条件
		Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
		// 第八个参数表示limit条件
		// Cursor cur = db.query(table, columns, selection, selectionArgs,
		// groupBy, having, orderBy, limit);
		// 查询结果总条数
		Integer num = cur.getCount();
		setTitle(Integer.toString(num) + " 条记录");
		String str = "";
		while (cur.moveToNext()) {
			// cur.getColumnIndex(ID)表示对查询的字段,获取字段在表中下标
			// cur.getColumnIndexOrThrow(ID)如果该字段不在查询字段范围之内则获取该字段在表中的下标
			String id = cur.getString(cur.getColumnIndex(ID));
			String title = cur.getString(cur.getColumnIndex(TITLE));
			String body = cur.getString(cur.getColumnIndex(BODY));
			str = str + id + " | " + title + " | " + body + "\n";
		}
		// 关闭查询结果
		cur.close();
		mTextView.setText(str);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.rebuild_table:
			// 新建数据表
			createTable();
			break;
		case R.id.delete_table:
			// 删除数据表
			dropTable();
			break;
		case R.id.insert_item:
			// 插入数据
			insertItem();
			break;
		case R.id.delete_item:
			// 删除数据
			deleteItem();
			break;
		case R.id.query_items:
			// 查询数据
			showItems();
			break;
		case R.id.update_item:
			// 更新数据
			update();
			break;
		}

	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		//关闭所打开的数据
		mOpenHelper.close();
	}
}

你可能感兴趣的:(Sqlite使用)