Android开发—数据库应用—访问数据表(SQLite OpenHelper) —添加检索操作(Retrieve)

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:数据库应用—添加检索操作(Retrieve)

* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月 14 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:

* 程序头部的注释结束

*/

 

 

以前用过的“db.rawQuery”语句可以用来直接做SQL查询(程序如下),

public Cursor getall() {  
       return db.rawQuery("SELECT * FROM notes", null);  
  
    }  

并返回查询结果的指针,如果想实现检索功能,可以再程序中使用更具弹性的“query”方法,来替换直接执行“SQL”语句的“rawQuery”方法。

 

修改后的“DummyDbAdapter.java”文件如下:

package com.demo.android.dummynote;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class NotesDbAdapter {
	private static final String DATABASE_NAME = "notes.db";
	private static final int DATABASE_VERSION = 1;
	private static final String DATABASE_TABLE = "notes";
	private static final String DATABASE_CREATE = "creat table notes("
			+ "_id INTEGER PRIMARY KEY," + "note TEXT," + "created INTEGER,"
			+ "modified INTEGER" + ");";

	private static class DatabaseHelper extends SQLiteOpenHelper {
		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			db.execSQL(DATABASE_CREATE);

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
			onCreate(db);
		}
	}

	private Context mCtx = null;
	private DatabaseHelper dbHelper;
	private SQLiteDatabase db;

	public NotesDbAdapter(Context ctx) {
		this.mCtx = ctx;
	}

	public NotesDbAdapter open() throws SQLException {
		dbHelper = new DatabaseHelper(mCtx);
		db = dbHelper.getWritableDatabase();
		return this;
	}

	public void close() {
		dbHelper.close();
	}

	private static final String KEY_ROWID = "_id";
	static final String KEY_NOTE = "note";
	private static final String KEY_CREATED = "created";
	
	String[] strCols = new String[]{
			KEY_ROWID,	
			KEY_NOTE,
			KEY_CREATED,
	};

	// get all entries
	public Cursor getall() {
		return db.query(DATABASE_TABLE, //Which table to Select
				strCols, //Which columns to return
				null, //WHERE clause
				null, //WHERE arguments
				null, //GROUP BY clause
				null, //HAVING clause
				null);//Order-by clause

	}
}


重构:

由于“”字件符串只会在“”语句中使用一次,因此为了省下内存空间,而少声明一个“”变量,即将“”与“”两段和写在一起,在其他程序中碰到次状况,也可以这样处理。

修改后的“DummyDbAdapter.java”文件如下:

package com.demo.android.dummynote;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class NotesDbAdapter {
	private static final String DATABASE_NAME = "notes.db";
	private static final int DATABASE_VERSION = 1;
	private static final String DATABASE_TABLE = "notes";
	private static final String DATABASE_CREATE = "creat table notes("
			+ "_id INTEGER PRIMARY KEY," + "note TEXT," + "created INTEGER,"
			+ "modified INTEGER" + ");";

	private static class DatabaseHelper extends SQLiteOpenHelper {
		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			db.execSQL(DATABASE_CREATE);

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
			onCreate(db);
		}
	}

	private Context mCtx = null;
	private DatabaseHelper dbHelper;
	private SQLiteDatabase db;

	public NotesDbAdapter(Context ctx) {
		this.mCtx = ctx;
	}

	public NotesDbAdapter open() throws SQLException {
		dbHelper = new DatabaseHelper(mCtx);
		db = dbHelper.getWritableDatabase();
		return this;
	}

	public void close() {
		dbHelper.close();
	}

	private static final String KEY_ROWID = "_id";
	static final String KEY_NOTE = "note";
	private static final String KEY_CREATED = "created";
	
	// get all entries
	public Cursor getall() {
		return db.query(DATABASE_TABLE, //Which table to Select
				new String[]{KEY_ROWID,	KEY_NOTE,KEY_CREATED}, //Which columns to return
				null, //WHERE clause
				null, //WHERE arguments
				null, //GROUP BY clause
				null, //HAVING clause
				null);//Order-by clause

	}
}


 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值