android连接sqlite数据库实例

1.首先在MainActivity类里定义一个内部类,该类继承自SQLiteOpenHelper,之后就通过该类对象来对数据库进行增删改查:

private static class DatabaseHelper extends SQLiteOpenHelper {

		

		
		public DatabaseHelper(Context context, String name,
				CursorFactory factory, int version) {
			super(context, name, factory, version);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			String sql = "CREATE TABLE " + TABLE_NAME + " ( " +TITLE + " text not null," + BODY + " text not null" + ");";
			Log.i("sql$$$$$$$$$$$$$$$$$$$$$$$$$", sql);
			db.execSQL(sql);
		}

		
		
		
		@Override
		public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
			// TODO Auto-generated method stub
			
		}
		
	}

2.在MainActivity类里定义我们要用到的宏定义:


private static final String TABLE_NAME = "DABATEST";
	private static final String TITLE = "NAME";
	private static final String BODY = "SAYSOMETHING";
	private static final int DATABASE_VERSION = 1;

	DatabaseHelper mHelper = new DatabaseHelper(this,TABLE_NAME,null,DATABASE_VERSION);//重要的一句!!!定义一个内部类DatabaseHelper的对象mHelper,用new的方式去定义,传入TABLE_NAME,第三个参数基本就是null,第四个参数version是数据库版本号,通常可以定义为一个静态类常量1
	

3.定义按钮的监听器和监听事件:

1)插入按钮:

Button.OnClickListener insert_button_listener = new Button.OnClickListener() {
			public void onClick(View v)
			{
				insertItem();//自己定义的函数
			}
		};
		
		Button insert_Button = (Button)findViewById(R.id.insert_button);
		insert_Button.setOnClickListener(insert_button_listener);


	private void insertItem() {
		 
		// TODO Auto-generated method stub
//通过mHelper的getWritableDatabase();函数,获取一个可写的数据库SQLiteDatabase对象,用这个对象的execSQL函数来执行数据库语句。
		SQLiteDatabase db = mHelper.getWritableDatabase();
		
		String sql1 = "insert into "+TABLE_NAME+" ("+TITLE+", "+BODY+") values('icesky','android的发展真快啊');";
		String sql2 = "insert into "+TABLE_NAME+" ("+TITLE+", "+BODY+") values('test','确实很快哦');";
		
		try {
			Log.i("第一条数据是:", sql1);//打印输出信息,属于Info级别
			Log.i("第二条数据是:", sql2);
			db.execSQL(sql1);
			db.execSQL(sql2);
			setTitle("插入两条数据成功");
		}
		catch(SQLException e){
			setTitle("插入两条数据失败");
		}//最好放在try,catch模块中,防止程序崩溃,增加程序的健壮性
	
	}


2)查询数据库中目前有几条数据按钮:

Button.OnClickListener show_button_listener = new Button.OnClickListener() {
			public void onClick(View v)
			{
				showItems();//自己定义的函数
			}

			
		};
		
		Button show_button = (Button)findViewById(R.id.show_button);
		show_button.setOnClickListener(show_button_listener);

private void showItems() {
		
		// TODO Auto-generated method stub
		SQLiteDatabase db = mHelper.getReadableDatabase();
		
		String col[] = {TITLE,BODY};
		Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
		Integer num = cur.getCount();
		setTitle(Integer.toString(num)+"条记录");
	}

Cursor类通过query函数,可以获取这个数据库表里的所有条列。

query函数的参数说明:第一个参数是数据库表名。第二个参数是我们想要的列的信息(想要TITLE,BODY列的信息)。第三个参数是selection,相当于where语句,如果想返回所有的信息,那么就置为null。第四个参数是selectionArgs,配合第三个参数使用,如果selection用到“?”,那么此项的字符串会代替“?”。第五个参数是having。第六个参数是order by,返回结果是否需要排序,null为不需要排序。


删除一条记录按钮:

	private void deleteItems() {
		// TODO Auto-generated method stub
		try{
			
			SQLiteDatabase db = mHelper.getWritableDatabase();
			
			db.delete(TABLE_NAME,TITLE+"= 'test'", null);//注意delete语句使用
			setTitle("删除了一条记录");
		}
		catch(SQLException e){
			setTitle("删除失败了");
		}
		
	}

删除整个表按钮:

private void DropTable() {
		// TODO Auto-generated method stub
		SQLiteDatabase db = mHelper.getWritableDatabase();
		String sql = "drop table " +TABLE_NAME;
		try{
			db.execSQL(sql);
			setTitle("删除表成功");
		}catch(SQLException e) {
			setTitle("删除表失败");
		}
	}

重新建立一个表按钮:


private void CreateTable() {
		// TODO Auto-generated method stub
		
		SQLiteDatabase db = mHelper.getWritableDatabase();
		String sql = "CREATE TABLE "+TABLE_NAME + "( " +TITLE+" text not null, " +BODY + " text not null "+");";
		Log.i("SQL%%%%%%%%%%%%%%",sql);//<span style="color:#cc0000;">最好把语句打印出来,这是一个好的习惯。这样如果数据库语句写错了,可以在logcat里查看哪里出错,如果因为少个括号,少个空格,大小写错误而找了半天原因,会很浪费时间。</span>
		
		try{
			db.execSQL(sql);
			setTitle("新建数据库成功");
		}catch(SQLException e){
			setTitle("新建数据库失败");
		}
		
	}
	




一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值