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这个方法,但是好像不行,因为我要添加的数据,是个数组,经度和纬度