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;
public class MyDbAdapter {
// 数据库名称
public final static String DB_NAME = "Book.db";
// 数据库版本
private static final int DB_VERSION =3;
//数据表名
private static final String Table_Name ="Book";
//创建数据库表信息
public static final String CREATE_BOOK="create table Book ("
+"id integer primary key autoincrement, "
+"author text, "
+"pages integer, "
+"name text)";
// 本地Context对象
private Context mContext = null;
// 执行open()打开数据库时,保存返回的数据库对象
private SQLiteDatabase mSQLiteDatabase = null;
// 由SQLiteOpenHelper继承过来
private DatabaseHelper mDatabaseHelper = null;
//内部类 ////////////////////////////////////////////////////////////////////////////////////
private static class DatabaseHelper extends SQLiteOpenHelper {
/* 构造函数-创建一个数据库 */
DatabaseHelper(Context context) {
// 当调用getWritableDatabase()
// 或 getReadableDatabase()方法时
// 则创建一个数据库
super(context, DB_NAME, null, DB_VERSION);
}
/* 创建一个表 */
@Override
public void onCreate(SQLiteDatabase db) {
// 数据库没有表时创建一个
db.execSQL(CREATE_BOOK);
}
/* 升级数据库 */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Book");
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 构造函数-取得Context */
public MyDbAdapter(Context context) {
mContext = context;
}
// 打开数据库,返回数据库对象
public void open() throws SQLException {
mDatabaseHelper = new DatabaseHelper(mContext);
mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();//从真正意义上创建数据库
}
// 关闭数据库
public void close() {
mDatabaseHelper.close();
}
/* 插入一条数据 */
public long insertData(String name,String author, int pages) {
ContentValues initialValues = new ContentValues();
initialValues.put("name", name);
initialValues.put("author", author);
initialValues.put("pages", pages);
return mSQLiteDatabase.insert(Table_Name, null, initialValues);
}
/* 删除一条数据 */
public boolean deleteData(String name) {
// sql="delete from tab_user where id='"+rowId+"'";
//mSQLiteDatabase.execSQL(sql);
return mSQLiteDatabase.delete(Table_Name, "name" + "='" + name+"'", null) > 0;
}
// 通过Cursor查询所有数据
public Cursor fetchAllData() {
return mSQLiteDatabase.query(Table_Name, new String[] { "name", "author", "pages" },
null, null, null, null, null);
}
//db.query("person", new String[]{"personid,name,age"}, "name like ?", new String[]{"%ljq%"}, null, null, "personid desc", "1,2");
//通过Cursor查询包含某个字的数据
//查询姓名Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%林计钦%", "4"});
public Cursor fetchDataName(String key,String value) {
Cursor mCursor =
//mSQLiteDatabase.query("tab_persons", new String[]{"name"}, "name like ?", new String[]{"%name0%"}, null, null, "personid desc", "1,2");
mSQLiteDatabase.query( Table_Name, new String[] { "name", "author", "pages" }, key + " like "+"'"+"%" +value+"%"+"'",null, null, null, null, null);
return mCursor;
}
/* 用key(表中类型)查询指定数据 */
public Cursor fetchData(String key,String value) {
Cursor mCursor =
mSQLiteDatabase.query( Table_Name, new String[] { "name", "author", "pages" }, key + "='" + value+"'", null, null, null, null, null);
//if (mCursor != null) {
/// mCursor.moveToFirst();
//}
return mCursor;
}
/* 更新一条数据 */
public boolean updateData( String name,String new_name,String author, int pages) {
ContentValues contentValue = new ContentValues();
contentValue.put("name", new_name);
contentValue.put("author", author);
contentValue.put("pages", pages);
return mSQLiteDatabase.update(Table_Name, contentValue, "name" + "='" + name+"'",null) > 0;
}
/* 删除一个表 */
public void deleteTable()
{
mSQLiteDatabase.execSQL("DROP TABLE " + Table_Name);
}
}
使用方法:
private MyDbAdapter myDbAdapter =new MyDbAdapter(this) ; myDbAdapter.open(); myDbAdapter.insertData("爱情跑跑跑","王大锤",67); Cursor cursor=myDbAdapter.fetchDataName("author","王"); String string =getAllData(cursor); data.setText(string); cursor.close(); myDbAdapter.close();
private String getAllData(Cursor cursor){ String string=""; if(cursor.getCount()!=0) { Log.d("log",String.valueOf(cursor.getCount())); int count = cursor.getCount(); cursor.moveToFirst(); do { string = string + cursor.getString(cursor.getColumnIndex("name"))+" "; string = string + cursor.getString(cursor.getColumnIndex("author"))+" "; string = string + cursor.getString(cursor.getColumnIndex("pages"))+"\n"; }while(cursor.moveToNext()); } return string; }