论坛首页 移动开发技术论坛

SQLiteDatabase 使用

浏览 19310 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2010-01-18  

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!

   发表时间:2010-01-21  
用otl的漂过。。
0 请登录后投票
   发表时间:2010-01-23  
zzsczz 写道
用otl的漂过。。

no idea on this~~~
0 请登录后投票
   发表时间:2010-01-25  
请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢!
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2010-03-04  
SQLiteDatabase.openOrCreateDatabase()这个方法不是可以创建数据库么,那么
SQLiteOpenHelper和SQLiteDatabase的主要区别是什么啊?
0 请登录后投票
   发表时间:2010-03-04  
SQLiteOpenHelper
1002840471 写道
SQLiteDatabase.openOrCreateDatabase()这个方法不是可以创建数据库么,那么
SQLiteOpenHelper和SQLiteDatabase的主要区别是什么啊?

SQLiteDatabase 自身提供了对数据库进行 增加 删除 更新 等操作的接口 但是也存在一些不足 比如:
1. 不支持创建数据库
2. 数据库版本升级 没有办法 因为数据各种各样 依赖于自己的实现

而SQLiteOpenHelper就弥补上述不足

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

仅限个人理解
0 请登录后投票
   发表时间:2010-04-24  
多谢lz提供的源码,顺便指出一下, 源码的xml有一个笔误:

EditTex 少了一个t(EditTexT)
0 请登录后投票
   发表时间:2010-05-11  
怎么连接 远程 数据库啊,比如 PC机上的 mysql数据库,用wifi连接网络??
0 请登录后投票
   发表时间: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~
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics