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 的子类:
[*]import android.content.Context;
[*]import android.database.sqlite.SQLiteDatabase;
[*]import android.database.sqlite.SQLiteDatabase.CursorFactory;
[*]import android.database.sqlite.SQLiteOpenHelper;
[*]/**
[*] * 通过getReadableDatabase()和getWritableDatabase()可以获得数据库对象。
[*] * 提供onCreate()-创建数据库时,onUpgrade()-升级数据库时,两个回调函数。
[*] */
[*]public class DatabaseHelper extends SQLiteOpenHelper {
[*] // 按要求必须要有构造函数
[*] public DatabaseHelper(Context context, String name, CursorFactory factory,
[*] int version) {
[*] super(context, name, factory, version);
[*] }
[*] // 当第一次得到SQLiteDatabase对象时,调用该方法
[*] @Override
[*] public void onCreate(SQLiteDatabase db) {
[*] String sql = ”create table MSG(id int,body varchar(100))”;
[*] db.execSQL(sql);
[*] System.out.println(“创建了一个数据库!”);
[*] }
[*] // 当更新数据库时执行该方法
[*] @Override
[*] public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
[*] System.out.println(“更新了数据库!”);
[*] // 还可以写其他的操作
[*] }
[*]}
有了这个类后,我们就可以对数据库进行增、删、改、查操作了。
插入数据:
[*]//insert (String table, String nullColumnHack, ContentValues values)
[*]//生成ContentValues对象,key:列名,value:想插入的值
[*] ContentValues values = new ContentValues();
[*] values.put(“id”, 1);
[*] values.put(“body”, ”hello”);
[*] DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
[*] //得到可写的SQLiteDatabase对象
[*] SQLiteDatabase db = dbhelper.getWritableDatabase();
[*] //调用insert方法,将数据插入数据库
[*] //参数1:表名
[*] //参数2:如果 第三个参数为null或个数为0,则必须知道这个参数为任意字段名(不要为主键),否则为null。
[*] db.insert(“MSG”, null, values);
[*] System.out.println(“插入了:1, hello”);
删除数据:
[*]delete (String table, String whereClause, String[] whereArgs)
[*]DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
[*] //得到可写的SQLiteDatabase对象
[*] SQLiteDatabase db = dbhelper.getWritableDatabase();
[*] //调用delete方法,删除数据
[*] db.delete(“MSG”, ”id=?”, new String[]{“1″});
[*] System.out.println(“删除了:id=1″);
修改数据:
[*]update (String table, ContentValues values, String whereClause, String[] whereArgs)
[*]ContentValues values = new ContentValues();
[*] values.put(“body”, ”my dear!”);
[*] DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
[*] //得到可写的SQLiteDatabase对象
[*] SQLiteDatabase db = dbhelper.getWritableDatabase();
[*] //调用insert方法,将数据插入数据库
[*] //参数3:where 子句 ”?”是占位符号,对应后面的”1″,这和web开发时的语法是一样的
[*] db.update(“MSG”, values, ”id=?”, new String[]{“1″});
[*] System.out.println(“更新了:hello–>my dear!”);
查询数据:
[*]//query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
[*]DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, ”text_msg”, null, 2);
[*] //得到可读的SQLiteDatabase对象
[*] SQLiteDatabase db = dbhelper.getReadableDatabase();
[*] //参数1:表名
[*] //参数2:要想显示的列
[*] //参数3:where子句
[*] //参数4:where子句对应的条件值
[*] //参数5:分组方式
[*] //参数6:having条件
[*] //参数7:排序方式
[*] Cursor cursor = db.query(“MSG”, new String[]{“id”,”body”}, "id=?", new String[]{“1″}, null, null, null);
[*] System.out.println(“查到的数据为:”);
[*] while(cursor.moveToNext()){
[*] int id = cursor.getInt(cursor.getColumnIndex(“id”));
[*] String name = cursor.getString(cursor.getColumnIndex(“body”));
[*] System.out.println(“–>”+id+”::::::::::”+name);
[*] }
怎样使用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
页:
[1]