首页 > 代码库 > Android SQLite数据库操作

Android SQLite数据库操作

更多内容欢迎访问我的个人网站:www.qingshuimonk.com查看

 

SQLite是一种轻量级关系型数据库,目前支持NULL,INTEGER,REAL(浮点),TEXT(字符串文本),BLOB(二进制文本)这五种类型。

建立的数据库文件位于/data/data/package-name/databases目录下。

在Eclipse中可以通过File Explorer访问文件。

 

对SQLite数据库操作的步骤:

1.建立SQLiteOpenHelper类,用于初始化、升级数据库。

 1 package com.qingshuimonk.radarmonitor;
 2 
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteDatabase.CursorFactory;
 6 import android.database.sqlite.SQLiteOpenHelper;
 7 
 8 public class MySQLiteHelper extends SQLiteOpenHelper{
 9     
10     public MySQLiteHelper(Context context, String name, CursorFactory factory, int version){
11         super(context, name, factory, version);
12     }
13 
14     @Override
15     public void onCreate(SQLiteDatabase db) {
16         // TODO Auto-generated method stub
17         db.execSQL("create table datatable(name text, value real)");
18     }
19 
20     @Override
21     // 数据库版本不一致时,磁盘上的数据库版本需要升级到当前版本时调用
22     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
23         // TODO Auto-generated method stub
24         // 删除旧表,创建新表
25         //db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE);
26         //onCreate(db);
27     }
28     
29     
30 
31 }

其中

  db.execSQL("create table datatable(name text, value real)");

指令用于创建数据库及表格,数据库名称为datatable,表格中内容有一个字符串文本name,一个浮点数字value。一般在使用中还会定义一个

_id integer primary key autoincrement字段

用于表示表格的行号。

 

2.创建或打开数据库

创建变量:

1 public MySQLiteHelper mySQLiteHelper;
2 public SQLiteDatabase datadb;

创建数据库:

1 // 创建数据库
2 mySQLiteHelper = new MySQLiteHelper(RegionActivity.this, "datadb", null, 1);
3 datadb = mySQLiteHelper.getReadableDatabase();

MySQLiteHelper的形参分别为:context,数据库名称,工厂(默认为null),版本

 

3.数据库的基本操作:

创建:datadb.execSQL("create table mytable(_id integer primary key autoincrement, name text, value real)");

关闭:datadb.close;

增加:

  ContentValues cv = new ContentValues();

  cv.put("_id",1);

  cv.put("name","length");

  cv.put("value",2);

  datadb.inset("mytable",null,cv);

查询:

  需要建立一个指向数据表的指针cursor,然后通过指针取得列的索引index,将index传入相应的方法,取得想要的数据。

  Cursor cursor = datadb.query("mytable", new String[]{"_id","name","value"},null,null,null,null,null);

  while(cursor.moveToNext()){

    int idindex = cursor.getColumnIndex("_id");

    int id = cursor.getInt(idindex);

 

    int nameindex = cursor.getColumnIndex("name");

    String name = cursor.getString(nameindex);

 

    int valueindex = cursor.getColumnIndex("value");

    float value = http://www.mamicode.com/cursor.getFloat(valueindex);

  }

  cursor的一些相应方法还有:

  moveToNext();

  moveToPrevious();

  moveToFirst();

  moveToLast();

  moveToPosition();

  getCount();

  getPosition();

  getColumnIndexOrThrow();

  getColumnName();

  getColumnNames();

  各方法使用详情参见Android Developers。

修改:

  String updateString = "update mytable set name=‘length‘, value=http://www.mamicode.com/‘12‘ where ";

  datadb.execSQL(updateString);

删除:

  String deleteString="delete from mytable where _id=1";

  datadb.execSQL(deleteString);