现在的位置: 首页 > 综合 > 正文

SQLite数据库开发—3个类搞定android数据库开发

2018年06月09日 ⁄ 综合 ⁄ 共 1678字 ⁄ 字号 评论关闭

一、几个关键类

1、SQLiteDatabase:android.database.sqlite.SQLiteDatebase:数据库类,用来操作数据库。

2、SQLiteOpenHelper:android.database.sqlite.SQLiteOpenHelper:数据库帮助类,用来创建数据库、及数据库表、获取数据库对象。

3、Cursor:android.database.Cursor:记录集游标。用来操作记录集。

二、实现

1、通过数据库帮助类创建数据库、表。

//自定义类继承于数据库帮助类
class SqliteHelper extends SQLiteOpenHelper
{  		
    //要创建的表名 
		public static final String TB_NAME="channel";  
		
		//当实例化一个数据库帮助对象时,会调用构造函数,当数据库不存在时,就会创建数据库,然后打开数据库(过程已经被封装起来了)
		public SqliteHelper(Context context, String name, CursorFactory factory, int version) 
		{  
		super(context, name, factory, version);  
		}  
	
		//数据库创建完成后,在调用onCreate函数,创建表  
		@Override  
		public void onCreate(SQLiteDatabase db) 
		{  
			db.execSQL("CREATE TABLE IF NOT EXISTS "+  
			TB_NAME+"("+  
			ID+" integer primary key,"+  
			NAME+" varchar,"+  
			URL+" varchar"+
			")"  
			);  
			Log.e("Database","onCreate");  
		}  
		//检查构造函数的版本号,若传入的版本号高于当前的,就会执行onUpgrade()方法来更新数据库和版本号。 
		@Override  
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
			db.execSQL("DROP TABLE IF EXISTS " + TB_NAME);  
			onCreate(db);  
			Log.e("Database","onUpgrade");  
		} 
	}
}

SQLiteOpenHelper 的构造函数,当数据库不存在时,就会创建数据库,然后打开数据库(过程已经被封装起来了),再调用onCreate (SQLiteDatabase db)方法来执行创建表之类的操作。当数据库存在时,SQLiteOpenHelper 就不会调用onCreate (SQLiteDatabase db)方法了,它会检测版本号,若传入的版本号高于当前的,就会执行onUpgrade()方法来更新数据库和版本号

2、获取数据库对象
//实例化数据库帮组类
SqliteHelper dbHelper=new SqliteHelper(context,DB_NAME, null, DB_VERSION); 
//获得当前数据库
SQLiteDatabase db= dbHelper.getWritableDatabase(); 

3、操作数据库表

查询:Cursor cursor = db.query("....");

while(cursor.moveToNext())

{

int per = cursor.getInt(0);//获取第一列 的值

String name = cursor.getString(1)//获取第二列的值

}

cursor.close();

db.close();

插入:

ContentValues values = new ContentValues();  
 values.put(NAME, name);  
 values.put(URL, url);  
 //插入新纪录
 Long id = db.insert(SqliteHelper.TB_NAME, null, values);

删除:

db.delete(SqliteHelper.TB_NAME, NAME +"='"+name+"'", null);

抱歉!评论已关闭.