您的位置:首页 > 数据库

数据库操作类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) {

}

}



    

    

    

    

    

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息