Study-android sqlite

android的数据库操作sqlite3 主要是用到下面两个类

SQLiteOpenHelper只是创建一个数据库和版本控制的作用。
SQLiteDatabase  是数据库,带有增删改查等功能

一般做法是创建一个类DBHelper继承SQLiteOpenHelper,并且实现了构造函数、onCreate、onUpgrade函数

同时在DBHelper类实现了数据库的增删改查等功能。

DBHelper的构造函数如下 其实就是 super(context, DB_NAME, null, sVersion); sVersion需要1或1以上。context是依附的activity/service

如果这个函数的sVersion的值大于原来的版本时。就会调用onUpgrade函数。一般在这个函数里面改变表格的属性,比如增加一列等

调用这个构造函数后数据库并没有创建。还必须调用DBHelper的getWritableDatabase或者getReadableDatabase函数,如果原来有数据库则直接返回这个数据库。如果原来没有数据库则调用onCreate方法来创建一个数据库SQLiteDatabase,并返回SQLiteDatabase,同时也可以再onCreate里面通过SQLiteDatabase创建表。

<span style="white-space:pre">	</span>public DBHelper(Context context) {
		super(context, DB_NAME, null, sVersion);
	}

	/** 调用这个构造函数的时候,如果version升级了,则会调用onUpgrade */
	public DBHelper(Context context, int version) {
		super(context, DB_NAME, null, version);
		if (sVersion < version)
			sVersion = version;
	}
<pre name="code" class="java"><span style="white-space:pre">	</span>@Override //这个函数一般就是创建表
	public void onCreate(SQLiteDatabase db) {
		DBG.log(TAG, DBG._FUNC_());
		db.execSQL("create table "
				+ TB_PERSON
				+ "(_id integer primary key autoincrement, name varchar, age varchar)");
	}


 

数据库的增删改查 的操作有两种,一直是直接操作sql语句,一种是调用SQLiteDatabase的各种函数,目前都是直接使用sql语句。SQLiteDatabase的各种函数先不关心。

sql语句的操作有如下的例子,其他的可以参照

sqlite3 mysql.db.databasescreate table hello (id int,name varchar,age varchar);  //创建表select * from history //查询所有delete from history where name = 'name8';  //删除alter table history add timetime varchar; //增加列属性select * from history where time > '5';  //条件查询delete from history; //删除表

3、各种操作可以通过SQLiteDatabase的mSQLiteDB.execSQL函数,但是查询的只能通过rawQuery函数。sql语句可以使用占位符"?"。

例如:db.rawQuery("select * from " + TB_PERSON + " where name = ?", new String[] { name });

下面一个工程例子。创建一个Person的类,数据库里面创建一个person表格,进行增删改查。

Person类

public class Person {
	private int _id;
	private String name;
	private String age;

	public Person() {

	}

	public Person(int _id, String name, String age) {
		super();
		this._id = _id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return _id;
	}

	public void setId(int _id) {
		this._id = _id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

}

DBHelper类
public class DBHelper extends SQLiteOpenHelper {
	private static final String TAG = "DBHelper";
	public static final String DB_NAME = "test.db";
	public static final String TB_PERSON = "person";

	public static int sVersion = 1;

	public DBHelper(Context context) {
		super(context, DB_NAME, null, sVersion);
	}

	/** 调用这个构造函数的时候,如果version升级了,则会调用onUpgrade */
	public DBHelper(Context context, int version) {
		super(context, DB_NAME, null, version);
		if (sVersion < version)
			sVersion = version;
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		DBG.log(TAG, DBG._FUNC_());
		db.execSQL("create table "
				+ TB_PERSON
				+ "(_id integer primary key autoincrement, name varchar, age varchar)");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		DBG.log(TAG, DBG._FUNC_());

	}

	/**
	 * 
	 * @param person
	 */
	public void add(Person person) {
		SQLiteDatabase db = getWritableDatabase();
		String sql = "insert into " + TB_PERSON + "(name,age)" + "values(?,?)";
		db.execSQL(sql, new Object[] { person.getName(), person.getAge() });
	}

	public void delete(int id) {
		SQLiteDatabase db = getWritableDatabase();
		String sql = "delete from " + TB_PERSON + " where _id = ?";
		db.execSQL(sql, new Object[] { "" + id });
	}

	public void delete() {
		SQLiteDatabase db = getWritableDatabase();
		String sql = "delete * from " + TB_PERSON;
		db.execSQL(sql);
	}

	public Cursor check() {
		SQLiteDatabase db = getWritableDatabase();
		Cursor cursor = null;
		try {
			cursor = db.rawQuery("select * from " + TB_PERSON, null);
		} catch (Exception e) {
		}
		return cursor;
	}

	public Cursor check(String name) {
		SQLiteDatabase db = getWritableDatabase();
		Cursor cursor = null;
		try {
			cursor = db.rawQuery("select * from " + TB_PERSON
					+ " where name = ?", new String[] { name });
		} catch (Exception e) {
		}
		return cursor;
	}

}
测试的activity

import com.wyd.study.DBG;
import com.wyd.study.R;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

/**
 * 
 * @author WangYD
 * @time 2015年8月7日
 * 
 */
public class SqliteActivity extends Activity implements OnClickListener {

	private static final String TAG = "SqliteActivity";
	private static final int[] btns = new int[] { R.id.add, R.id.delete,
			R.id.show, };

	private int mIndex = 0;
	private String mName = "wangyd";
	private int mAge = 20;

	private DBHelper mDBHelper;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		DBG.log(TAG, DBG._FUNC_());
		setContentView(R.layout.activity_sqlite);
		for (int btn : btns) {
			findViewById(btn).setOnClickListener(this);
		}
		mDBHelper = new DBHelper(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.add:
			Person person = new Person();
			person.setName(mName + mIndex);
			person.setAge(mAge + mIndex + "");
			mIndex++;
			mDBHelper.add(person);
			break;
		case R.id.delete:
			mDBHelper.delete(5);
			break;

		case R.id.show:
			Cursor cursor = mDBHelper.check();
			if (cursor != null) {
				if (cursor.moveToFirst()) {
					do {
						/**获取列索引号*/
						int _name = cursor.getColumnIndex("name");
						int _id = cursor.getColumnIndex("_id");
						int _age = cursor.getColumnIndex("age");
						/** 获取行内容*/
						String name = cursor.getString(_name);
						String age = cursor.getString(_age);
						int id = cursor.getInt(_id);
						DBG.log(TAG, id + " " + name + " " + age);

					} while (cursor.moveToNext());
				}
			}
			break;
		}

	}

}


源码下载:http://download.csdn.net/detail/yidong_wang/8975697





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值