读书人

SQLiteDatabase 施用

发布时间: 2012-10-15 09:45:25 作者: rapoo

SQLiteDatabase 使用

SQLiteDatabase

?

[功能]

SQLiteDatabase 是关于数据库操作的 可用于 insert delete update query 等操作 可惜美中不足的是:

1. 其不支持创建数据库

2. 其不支持版本更新 或者说其不知道如何做 因为具体数据的差异

?

鉴于以上的缺陷 有一个辅助类可以完成上面功能 那就是:SQLiteOpenHelper

?

?

[代码]

1. 定义SQLiteOpenHelper 并完成 创建 更新 功能

public class DBHelper extends SQLiteOpenHelper {        public static final String TB_NAME = "mycountry";    public static final String ID = "_id";    public static final String COUNTRY = "country";    public static final String CODE = "code";            public DBHelper(Context context, String name,             CursorFactory factory,int version) {        super(context, name, factory, version);    }    public void onCreate(SQLiteDatabase db) {            db.execSQL("CREATE TABLE IF NOT EXISTS "                 + TB_NAME + " ("         + ID + " INTEGER PRIMARY KEY,"             + COUNTRY + " VARCHAR,"            + CODE + " INTEGER)");    }    public void onUpgrade(SQLiteDatabase db,             int oldVersion, int newVersion) {                db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);        onCreate(db);    }}

?

?

?

?

2. 从SQLiteOpenHelper 得到SQLiteDatabase的实例

DBHelper helper = new DBHelper(this, DB_NAME, null, VERSION);SQLiteDatabase db = helper.getWritableDatabase();

?

?

?

3. SQLiteDatabase 的一些操作:

* 插入数据:

ContentValues values = new ContentValues();        values.put(DBHelper.COUNTRY, "中国");        values.put(DBHelper.CODE, 86);        db.insert(DBHelper.TB_NAME,DBHelper.ID, values);

?

?

* 改动数据

db.insert(DBHelper.TB_NAME,DBHelper.ID,null);        values.clear();        values.put(DBHelper.COUNTRY, "意大利");        values.put(DBHelper.CODE, 39);        db.update(DBHelper.TB_NAME, values,DBHelper.ID + " = 2",null);

?

* execSQL 执行SQL语言

db.execSQL("INSERT INTO "                + DBHelper.TB_NAME + "("                + DBHelper.COUNTRY + ","                + DBHelper.CODE + ") VALUES "                + "('洪都拉斯',504)");

?

* 查询数据

Cursor c = db.query(DBHelper.TB_NAME,null,null,null,null,null,        DBHelper.CODE+" DESC");

?

* 删除数据所有数据

db.delete(DBHelper.TB_NAME,null,null);

?

?

?

?

done!

1 楼 zzsczz 2010-01-21 用otl的漂过。。 2 楼 gryphone 2010-01-23 zzsczz 写道用otl的漂过。。
no idea on this~~~ 3 楼 wuliupo 2010-01-25 请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢! 4 楼 gryphone 2010-01-25 wuliupo 写道请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢!
wuliupo 写道请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢!
我的环境与程序 设定:
1. sdk: android-sdk-windows-1.5_r2
2. Build target: Android 1.5 5 楼 1002840471 2010-03-04 SQLiteDatabase.openOrCreateDatabase()这个方法不是可以创建数据库么,那么
SQLiteOpenHelper和SQLiteDatabase的主要区别是什么啊? 6 楼 gryphone 2010-03-04 SQLiteOpenHelper1002840471 写道SQLiteDatabase.openOrCreateDatabase()这个方法不是可以创建数据库么,那么
SQLiteOpenHelper和SQLiteDatabase的主要区别是什么啊?
SQLiteDatabase 自身提供了对数据库进行 增加 删除 更新 等操作的接口 但是也存在一些不足 比如:
1. 不支持创建数据库
2. 数据库版本升级 没有办法 因为数据各种各样 依赖于自己的实现

而SQLiteOpenHelper就弥补上述不足

个人感觉:
SQLiteDatabase 提供了数据操作的接口
SQLiteOpenHelper 干一些打杂工作

仅限个人理解 7 楼 ostrichmyself 2010-04-24 多谢lz提供的源码,顺便指出一下, 源码的xml有一个笔误:

EditTex 少了一个t(EditTexT) 8 楼 tianlinzx 2010-05-11 怎么连接 远程 数据库啊,比如 PC机上的 mysql数据库,用wifi连接网络?? 9 楼 l101y1982j 2010-05-14 我很好奇的问问sqlite里的模糊查询,如何做?

我写
query(tableName,null,"subject like '%?%'","9",null,null,null)

query(tableName,null,"subject like ?","%9%",null,null,null)

query(tableName,null,"subject like %?%","9",null,null,null)

都被报了sqliteException:snytax error~ 10 楼 gryphone 2010-05-15 l101y1982j 写道我很好奇的问问sqlite里的模糊查询,如何做?

我写
query(tableName,null,"subject like '%?%'","9",null,null,null)

query(tableName,null,"subject like ?","%9%",null,null,null)

query(tableName,null,"subject like %?%","9",null,null,null)

都被报了sqliteException:snytax error~
请参考这个:
http://griffinshi.iteye.com/blog/666875 11 楼 bit6211 2010-06-23 请问SQLiteDatabase可以建立索引吗 如何建立 谢谢 12 楼 xuehui.hf 2010-06-29 <div class="quote_title">gryphone 写道</div>
<div class="quote_div">
<p>SQLiteDatabase </p>
<p>?</p>
<p>[功能]</p>
<p>SQLiteDatabase 是关于数据库操作的 可用于 insert delete update query 等操作 可惜美中不足的是:</p>
<p>1. 其不支持创建数据库</p>
<p>2. 其不支持版本更新 或者说其不知道如何做 因为具体数据的差异</p>
<p>?</p>
<p>鉴于以上的缺陷 有一个辅助类可以完成上面功能 那就是:SQLiteOpenHelper</p>
</div>
<p>?</p>
<p>我觉得这不能说是SQLiteDatabase的缺陷吧,这是设计成这样的。SQLiteDatabase提供数据访问功能,SQLiteOpenHelper完成数据库的管理功能。</p> 13 楼 012345. 2011-01-09 请问SQLite数据库是否支持异步插入数据

如果可以,该如何实现

多谢


补充,想到update这个方法,但是好像不行,因为我要添加的数据,是个数组,经度和纬度

读书人网 >其他数据库

热点推荐