Activity SQLite数据库操作,ContentProvider与ContentResolver类似操作

首先定义自己的类继承SQLiteOpenHelper,这个类的getWritableDatabase()和getReadableDatabase()会帮助你生成一个数据库SQLiteDatabase。

SQLiteDatabase数据库操作如下:

1.标准SQL:

添加,更改,删除execSQL()的第一个参数为SQL语句,第二个参数为SQL语句中占位符

例如:db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"张三", 4});

查询rawQuery()的第一个参数为SQL语句,第二个参数为SQL语句中占位符

例如:Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%张三%", "4"});

2.方法:

一,SQLiteOpenHelper 类

其中:

getReadableDatabase()得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。

getWritableDatabase()得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。

onCreate(SQLiteDatabase db)在第一次创建数据库时调用。

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)在更改数据库时都会调用。

onOpen(SQLiteDatabase db)当数据库打开时调用。

close()关闭数据库。

二,SQLiteDatabase类

这个类提供了对数据库的一些基本操作:

insert()

delete()

update()

query()

。。。。。等等。

代码:

SQLiteOpenHelper 的子类:

  1. import android.content.Context;
  2. import android.database.sqlite.SQLiteDatabase;
  3. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. /**
  6.  * 通过getReadableDatabase()和getWritableDatabase()可以获得数据库对象。
  7.  * 提供onCreate()-创建数据库时,onUpgrade()-升级数据库时,两个回调函数。
  8.  */
  9. public class DatabaseHelper extends SQLiteOpenHelper {
  10.     // 按要求必须要有构造函数
  11.     public DatabaseHelper(Context context, String name, CursorFactory factory,
  12.             int version) {
  13.         super(context, name, factory, version);
  14.     }
  15.     // 当第一次得到SQLiteDatabase对象时,调用该方法
  16.     @Override
  17.     public void onCreate(SQLiteDatabase db) {
  18.         String sql = ”create table MSG(id int,body varchar(100))”;
  19.         db.execSQL(sql);
  20.         System.out.println(“创建了一个数据库!”);
  21.     }
  22.     // 当更新数据库时执行该方法
  23.     @Override
  24.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  25.         System.out.println(“更新了数据库!”);
  26.         // 还可以写其他的操作
  27.     }
  28. }

有了这个类后,我们就可以对数据库进行增、删、改、查操作了。
插入数据:

  1. //insert (String table, String nullColumnHack, ContentValues values)

  2. //生成ContentValues对象,key:列名,value:想插入的值
  3.                 ContentValues values = new ContentValues();
  4.                 values.put(“id”, 1);
  5.                 values.put(“body”, ”hello”);
  6.                 DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
  7.                 //得到可写的SQLiteDatabase对象
  8.                 SQLiteDatabase db = dbhelper.getWritableDatabase();
  9.                 //调用insert方法,将数据插入数据库
  10.                 //参数1:表名
  11.                 //参数2:如果 第三个参数为null或个数为0,则必须知道这个参数为任意字段名(不要为主键),否则为null。
  12.                 db.insert(“MSG”, null, values);
  13.                 System.out.println(“插入了:1, hello”); 

删除数据:

  1. delete (String table, String whereClause, String[] whereArgs)

  2. DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
  3.                 //得到可写的SQLiteDatabase对象
  4.                 SQLiteDatabase db = dbhelper.getWritableDatabase();
  5.                 //调用delete方法,删除数据
  6.                 db.delete(“MSG”, ”id=?”, new String[]{“1″});
  7.                 System.out.println(“删除了:id=1″);

修改数据:

  1. update (String table, ContentValues values, String whereClause, String[] whereArgs)

  2. ContentValues values = new ContentValues();
  3.                 values.put(“body”, ”my dear!”);
  4.                 DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
  5.                 //得到可写的SQLiteDatabase对象
  6.                 SQLiteDatabase db = dbhelper.getWritableDatabase();
  7.                 //调用insert方法,将数据插入数据库
  8.                 //参数3:where 子句 ”?”是占位符号,对应后面的”1″,这和web开发时的语法是一样的
  9.                 db.update(“MSG”, values, ”id=?”, new String[]{“1″});
  10.                 System.out.println(“更新了:hello–>my dear!”);

查询数据:

  1. //query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

  2. DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
  3.                 //得到可读的SQLiteDatabase对象
  4.                 SQLiteDatabase db = dbhelper.getReadableDatabase();
  5.                 //参数1:表名
  6.                 //参数2:要想显示的列
  7.                 //参数3:where子句
  8.                 //参数4:where子句对应的条件值
  9.                 //参数5:分组方式
  10.                 //参数6:having条件
  11.                 //参数7:排序方式
  12.                 Cursor cursor = db.query(“MSG”, new String[]{“id”,”body”}, "id=?", new String[]{“1″}, null, null, null);
  13.                 System.out.println(“查到的数据为:”);
  14.                 while(cursor.moveToNext()){
  15.                         int id = cursor.getInt(cursor.getColumnIndex(“id”));
  16.                         String name = cursor.getString(cursor.getColumnIndex(“body”));
  17.                         System.out.println(“–>”+id+”::::::::::”+name);
  18.                     }

怎样使用adb查看数据库?

sqlite3 数据库名.db  //打开或创建指定的数据库。然后就可以操作数据库了。

.help查看sqlite的操作指南。

 

ContentProvider与ContentResolver的方法:

public Uri insert(Uri uri, ContentValues values)

public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)

public int delete(Uri uri, String selection, String[] selectionArgs)  

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

我的话费充值店-各种面额

电信100元仅售98.60 
联通100仅售99.00
移动100仅售99.30

相关推荐