数据库操作类SQLiteDatabase
2013-09-18 12:03
417 查看
SQLiteDatabase该类封装了一些常用的操作数据库的API,(添加-Create,查询-Retrieve,更新-Update,删除-Delete).这些操作简称CRUD。
execSQL().该语句可以自行insert,uipdate,delete,和CREATE TABLE之类的有更改行为的语句。
rawQuery(),用于执行select查询语句。
execSQL() .方法有两种构造方法:
execSQL(String sql); //这种方法直接拼SQL语句就行了。
execSQL(String sql,Object[] bindArgs)//这种方法支持占位符,Object[]里面的参数就是占位符的值,参数的顺序应该与占位符的顺序相一致。
执行完以后关闭掉db.close();
rawQuery()的原型:
public Cursor rawQuery (String sql,String [] selectionArgs){
//第一个参数为SQL语句
//第二个参数为占位符的值,如果没有可以设置为null
}
该方法返回的是一个游标类型Cursor。
按照MVC模式,实体类属于模型层。
源代码:
package org.test1.activity;
import org.test1.entity.ContactInfo;
import org.test1.service.ContactInfoService;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;
public class DBTest extends AndroidTestCase {
private static final String TAG = "DBTest";
public void createDatabase() {
DBOpenHelper db = new DBOpenHelper(this.getContext());
SQLiteDatabase sqliteDatabase = db.getReadableDatabase();
Log.d(TAG, "success");
}
public void insertContactInfo() {
// 业务类实例
ContactInfoService service = new ContactInfoService(this.getContext());
// 实体类实例
ContactInfo contact = new ContactInfo("托马斯", "jiangnan@live.com",
"363849290", "119", 0);
ContactInfo contact1 = new ContactInfo("马丁路德金", "tianxnan@live.com",
"363849290", "120", 1);
ContactInfo contact2 = new ContactInfo("奥巴马", "ooognan@live.com",
"363849290", "123", 2);
ContactInfo contact3 = new ContactInfo("戈尔巴乔夫", "xxxngnan@live.com",
"363849290", "12315", 3);
ContactInfo contact4 = new ContactInfo("华盛顿", "mmmngnan@live.com",
"363849290", "911", 4);
// 插入数据
service.insertContactinfo(contact);
service.insertContactinfo(contact1);
service.insertContactinfo(contact2);
service.insertContactinfo(contact3);
service.insertContactinfo(contact4);
}
// 查询所有数据
public void getAllContactInfo() {
// 业务类实例
ContactInfoService service = new ContactInfoService(this.getContext());
// 得到所有记录
Cursor cursor = service.getAllContactInfo();
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String msn = cursor.getString(cursor.getColumnIndex("msn"));
String qq = cursor.getString(cursor.getColumnIndex("qq"));
String mobile = cursor.getString(cursor.getColumnIndex("mobile"));
int icon = cursor.getInt(cursor.getColumnIndex("icon"));
Log.d(TAG, "id:" + id + ",name:" + name + ",msn:" + msn + ",qq:"
+ qq + ",mobile:" + mobile + ",icon:" + icon);
}
}
}
package org.test1.service;
import org.test1.activity.DBOpenHelper;
import org.test1.dao.ContactInfoInterface;
import org.test1.entity.ContactInfo;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/** CRUD方法 */
public class ContactInfoService implements ContactInfoInterface {
private DBOpenHelper helper = null;
private SQLiteDatabase db = null;
public ContactInfoService(Context context) {
helper = new DBOpenHelper(context);
// 获取数据操作类实例
db = helper.getReadableDatabase();
}
@Override
public void insertContactinfo(ContactInfo ci) {
db.execSQL(
"INSERT INTO contactinfo (name,msn,qq,mobile,icon) VALUES (?,?,?,?,?)",
new Object[] { ci.getName(), ci.getMsn(), ci.getQq(),
ci.getMobile(), ci.getIcon() });
}
@Override
public void deleteContactInfo(Integer id) {
db.execSQL("DELETE FROM contactinfo WHERE id=?", new Object[] { id });
}
@Override
public void modifyContactInfo(ContactInfo ci) {
}
@Override
public Cursor getAllContactInfo() {
Cursor cursor = db.rawQuery("SELECT * FROM contactinfo", null);
return cursor;
}
@Override
public ContactInfo getOneContactInfo(Integer id) {
Cursor cursor = db.rawQuery("SELECT * FROM contactifo WHERE id=?",
new String[] { id.toString() });
ContactInfo contact = null;
if (cursor.moveToFirst()) {
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String msn = cursor.getString(cursor.getColumnIndex("msn"));
String qq = cursor.getString(cursor.getColumnIndex("qq"));
String mobile = cursor.getString(cursor.getColumnIndex("mobile"));
int icon = cursor.getInt(cursor.getColumnIndex("icon"));
// 实体类实例
contact = new ContactInfo(name, msn, qq, mobile, icon);
}
return contact;
}
}
package org.test1.entity;
public class ContactInfo {
private int id;
private String name;
private String msn;
private String qq;
private String mobile;
private int icon;
public ContactInfo(int id, String name, String msn, String qq,
String mobile, int icon) {
super();
this.id = id;
this.name = name;
this.msn = msn;
this.qq = qq;
this.mobile = mobile;
this.icon = icon;
}
public ContactInfo(String name, String msn, String qq, String mobile,
int icon) {
super();
this.name = name;
this.msn = msn;
this.qq = qq;
this.mobile = mobile;
this.icon = icon;
}
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 getMsn() {
return msn;
}
public void setMsn(String msn) {
this.msn = msn;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
}
package org.test1.activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper {
// 数据库名称
private static final String DATABASE_NAME = "contact_info.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 构造方法
public DBOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//该方法在初次使用软件的时候创建数据库表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE contactinfo( _id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20),msn varchar(50),qq varchar(15),mobile varchar(50),icon INTEGER)");
}
//该方法用于更新数据库的表结构
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
execSQL().该语句可以自行insert,uipdate,delete,和CREATE TABLE之类的有更改行为的语句。
rawQuery(),用于执行select查询语句。
execSQL() .方法有两种构造方法:
execSQL(String sql); //这种方法直接拼SQL语句就行了。
execSQL(String sql,Object[] bindArgs)//这种方法支持占位符,Object[]里面的参数就是占位符的值,参数的顺序应该与占位符的顺序相一致。
执行完以后关闭掉db.close();
rawQuery()的原型:
public Cursor rawQuery (String sql,String [] selectionArgs){
//第一个参数为SQL语句
//第二个参数为占位符的值,如果没有可以设置为null
}
该方法返回的是一个游标类型Cursor。
按照MVC模式,实体类属于模型层。
源代码:
package org.test1.activity;
import org.test1.entity.ContactInfo;
import org.test1.service.ContactInfoService;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;
public class DBTest extends AndroidTestCase {
private static final String TAG = "DBTest";
public void createDatabase() {
DBOpenHelper db = new DBOpenHelper(this.getContext());
SQLiteDatabase sqliteDatabase = db.getReadableDatabase();
Log.d(TAG, "success");
}
public void insertContactInfo() {
// 业务类实例
ContactInfoService service = new ContactInfoService(this.getContext());
// 实体类实例
ContactInfo contact = new ContactInfo("托马斯", "jiangnan@live.com",
"363849290", "119", 0);
ContactInfo contact1 = new ContactInfo("马丁路德金", "tianxnan@live.com",
"363849290", "120", 1);
ContactInfo contact2 = new ContactInfo("奥巴马", "ooognan@live.com",
"363849290", "123", 2);
ContactInfo contact3 = new ContactInfo("戈尔巴乔夫", "xxxngnan@live.com",
"363849290", "12315", 3);
ContactInfo contact4 = new ContactInfo("华盛顿", "mmmngnan@live.com",
"363849290", "911", 4);
// 插入数据
service.insertContactinfo(contact);
service.insertContactinfo(contact1);
service.insertContactinfo(contact2);
service.insertContactinfo(contact3);
service.insertContactinfo(contact4);
}
// 查询所有数据
public void getAllContactInfo() {
// 业务类实例
ContactInfoService service = new ContactInfoService(this.getContext());
// 得到所有记录
Cursor cursor = service.getAllContactInfo();
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String msn = cursor.getString(cursor.getColumnIndex("msn"));
String qq = cursor.getString(cursor.getColumnIndex("qq"));
String mobile = cursor.getString(cursor.getColumnIndex("mobile"));
int icon = cursor.getInt(cursor.getColumnIndex("icon"));
Log.d(TAG, "id:" + id + ",name:" + name + ",msn:" + msn + ",qq:"
+ qq + ",mobile:" + mobile + ",icon:" + icon);
}
}
}
package org.test1.service;
import org.test1.activity.DBOpenHelper;
import org.test1.dao.ContactInfoInterface;
import org.test1.entity.ContactInfo;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/** CRUD方法 */
public class ContactInfoService implements ContactInfoInterface {
private DBOpenHelper helper = null;
private SQLiteDatabase db = null;
public ContactInfoService(Context context) {
helper = new DBOpenHelper(context);
// 获取数据操作类实例
db = helper.getReadableDatabase();
}
@Override
public void insertContactinfo(ContactInfo ci) {
db.execSQL(
"INSERT INTO contactinfo (name,msn,qq,mobile,icon) VALUES (?,?,?,?,?)",
new Object[] { ci.getName(), ci.getMsn(), ci.getQq(),
ci.getMobile(), ci.getIcon() });
}
@Override
public void deleteContactInfo(Integer id) {
db.execSQL("DELETE FROM contactinfo WHERE id=?", new Object[] { id });
}
@Override
public void modifyContactInfo(ContactInfo ci) {
}
@Override
public Cursor getAllContactInfo() {
Cursor cursor = db.rawQuery("SELECT * FROM contactinfo", null);
return cursor;
}
@Override
public ContactInfo getOneContactInfo(Integer id) {
Cursor cursor = db.rawQuery("SELECT * FROM contactifo WHERE id=?",
new String[] { id.toString() });
ContactInfo contact = null;
if (cursor.moveToFirst()) {
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String msn = cursor.getString(cursor.getColumnIndex("msn"));
String qq = cursor.getString(cursor.getColumnIndex("qq"));
String mobile = cursor.getString(cursor.getColumnIndex("mobile"));
int icon = cursor.getInt(cursor.getColumnIndex("icon"));
// 实体类实例
contact = new ContactInfo(name, msn, qq, mobile, icon);
}
return contact;
}
}
package org.test1.entity;
public class ContactInfo {
private int id;
private String name;
private String msn;
private String qq;
private String mobile;
private int icon;
public ContactInfo(int id, String name, String msn, String qq,
String mobile, int icon) {
super();
this.id = id;
this.name = name;
this.msn = msn;
this.qq = qq;
this.mobile = mobile;
this.icon = icon;
}
public ContactInfo(String name, String msn, String qq, String mobile,
int icon) {
super();
this.name = name;
this.msn = msn;
this.qq = qq;
this.mobile = mobile;
this.icon = icon;
}
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 getMsn() {
return msn;
}
public void setMsn(String msn) {
this.msn = msn;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
}
package org.test1.activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper {
// 数据库名称
private static final String DATABASE_NAME = "contact_info.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 构造方法
public DBOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//该方法在初次使用软件的时候创建数据库表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE contactinfo( _id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20),msn varchar(50),qq varchar(15),mobile varchar(50),icon INTEGER)");
}
//该方法用于更新数据库的表结构
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
相关文章推荐
- SQLiteDatabase数据库操作类CRUD(附源码)
- QSqlDatabase操作数据库sqlite3
- Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
- android数据库操作出现的 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
- SQLiteDataBase 新建数据库表并查询的demo
- 使用SQLiteDatabase进行数据库操作的步骤
- Android学习笔记-数据库开发-4:SQLiteDataBase基本用法(1):获取一个SQLiteDataBase
- Android 数据库SQLiteDatabase的使用!!
- Android数据库SQLiteDatabase的使用
- Android 数据库SQLiteDatabase的使用!!
- .Net版SQLite无法访问网络位置的数据库文件--提示cannot open database file
- App_Code/DataBase.cs(数据库操作类)
- 使用SQLiteDatabase进行数据库操作的步骤
- 关于数据库SQLiteDatabase的增删改查四个方法的参数详解
- ios sqlite3数据库的封装-自己封装的,针对锁死database is closed的解决和预防
- Android SQLiteDatabase数据库的总结
- SQLiteDatabase数据库操作详解
- SQLiteDatabase里面的简单操作数据库的方法
- Android:SqliteDatabase 数据库的简单使用