一、SQLite介绍


SQLite是一个小型的内嵌于Android的数据库;我们不需要引入驱动即可访问它;

SQLite可视化工具:SQLite Expert Professional 3;


二、Android访问SQLite


主要步骤:


(1)创建某个类继承SQLiteOpenHelper,并重写
-- 带Context参数的构造函数; //用来创建数据库 -- onCreate(SQLiteDatabase db); //在创建数据库时调用 -- onUpgrade(SQLiteDatabase db,int old,int newversion); //数据库版本更改时调用
(2)创建数据库:SQLiteDatabase db = helper.getWritableDatabase();
(3)SQL语句:db.execSQL(String sql);

具体模板代码如下:


package org.xiazdong.db.util;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DatabaseHelper extends SQLiteOpenHelper{private static final String TAG = "DatabaseHelper";private static  int VERSION = 1;public DatabaseHelper(Context context) {super(context, "test.db", null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table 语句");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.i(TAG, "版本更新...");}}

当创建数据库时,database存放在/data/data/package/databases 目录中;


1.打开数据库


SQLiteDatabase db = helper.getWritableDatabase(); SQLiteDatabase db = helper.getReadableDatabase(); //此函数内部其实也调用了getWritableDatabase()函数,即调用了此函数,也可以写数据

2.insert语句


(1)db.execSQL("insert into person(name,age) values(?,?)",new Object[]{"xiazdong",20}); (2)
ContentValues values = new ContentValues();values.put("name","xiazdong");values.put("age",20);db.insert("tablename",null,values);

3.delete语句


(1)db.execSQL("delete from person where id=?",new Object[]{id}); (2)db.delete("tablename","id=?",new String[]{id+""});

4.update语句


(1)
db.exeSQL("update person set age=? where name=?",new Object[]{30,"xiazdong"});
(2)
ContentValues values = new ContentValues();values.put("age",30);/*set子句*/db.update("tablename",values,"name=?"/*where子句*/,new String[]{"xiazdong"}/*where子句参数*/);

5.query语句


(1)
Cursor cursor = db.rawQuery("select * from person where name=?",new Object[]{"xiazdong"});while(cursor.moveToNext()){    //int index = cursor.getColumnIndex(String name);//根据name获得索引    //String name = cursor.getString(int index);    //根据索引获得值    String name = cursor.getString(cursor.getColumnIndex("name")); }

(2) Cursor cursor = db.query("tablename",null /*表示select * */,"name=?" /*where语句*/,new String[]{"xiazdong"},null /*group by 语句*/,null /*having 语句*/,null /*order by语句*/,null /*limit 语句*/);

6.分页语句


Cursor cursor = db.rawQuery("select * from person limit ?,?",new Object[]{5,5}); //第一个5表示跳过5条记录,下一个5为查询结果的记录个数 while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); }

7.获得记录个数语句


(1)
Cursor cursor = db.rawQuery("select count(*) from person", null);cursor.moveToFirst();int count = cursor.getInt(0);

(2) db.query("person",new String[]{"count(*)"},null,null,null,null,null,null);

三、事务操作


模板代码如下:
db.beginTransaction();try{//事务操作db.setTransactionSuccessful();//此句必须要有,不然db.endTransaction()默认为回滚}finally{db.endTransaction();}



更多相关文章

  1. Android下SQLite3数据库操作笔记
  2. android数据存储
  3. Android中SQLite操作示例
  4. Android入门:SQLite
  5. Android入门:SQLite
  6. android 常用的数据库表以及操作说明
  7. 在Android中查看和管理sqlite数据库
  8. Android中SQLite数据库存储方式 .(转)
  9. Android数据库工具ORM-greenDAO学习

随机推荐

  1. Java JDK1.6 API 帮助文档和Android API
  2. Android 线程池原理及使用
  3. Cordova调用DatePickerDialog
  4. Conflict with dependency 'com.android.
  5. 为什么自定义ViewGroup ondraw方法不会被
  6. Android异步Http客户端 一个基于回调的Ht
  7. Android中处理代码未捕获异常
  8. Android中获取CPU序列号
  9. android build error
  10. android Gallery 仿iPhone 图片滑动