http://www.verycd.com/topics/2915669/
17_传智播客Android视频教程_创建数据库与完成数据添删改查
1.创建数据库
package com.wan; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) { //context,文件名,游标(使用默认的游标工厂),数据库的版本号 super(context,"wan.db",null,1);//保存在 /data/data/<包民>/database/ 文件下 } //数据库在第一次创建的时候调用的。创建完数据库文件后执行。这里一般是生成数据库表结构。 @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table person(id integer primary key autoincorement,name varchar(20))"); } //数据库文件版本号发生变化的时候执行的。一般是添加字段,取出字段。 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("Alter Table person Add phone varchar(12) null"); } }
这样就可以创建数据库和表了。
使用 sqlite expert professional 查看sqlite里面的数据和结构
数据库文件会在 /data/data/<包民>/database/
2.执行创建
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DBOpenHelper db =new DBOpenHelper(getApplicationContext()); db.getWritableDatabase(); }
在调用
SQLiteDatabase r=db.getWritableDatabase(); SQLiteDatabase r1=db.getWritableDatabase();
执行两次得到的数据库是一个实例。
上面的方法,在数据库文件文件太大,就可能会报错。
3.更新、查询和分页
//修改 r1.execSQL("update person set name =? , phone =?", new String[] { "name", "891" }); //查询 Cursor cursor = r1.rawQuery("select * from person where id = ? ", new String[] { "128" }); if (cursor.moveToFirst()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name =cursor.getString(cursor.getColumnIndex("name")); } //分页 Cursor cursorPage = r1.rawQuery("select * from person limit 100,50",null);
18_传智播客Android视频教程_在SQLite中使用事务
1.事务使用
//开始事务 r1.beginTransaction(); r1.execSQL("update person set xxx=100 where id =1"); r1.execSQL("update person set yyy=100 where id =1"); //结束事务 r1.endTransaction(); //事务的提交或回滚是 由事务标志决定的,默认情况下为false。为True的时候提交,否则回滚
第18集完。