今天学习了Android SqlLite 一些知识,记录下
一、使用SQLiteDatabase方法一:
1.创建数据库
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("databasename.db",MODE_PRIVATE,null);
2.创建表
String sql="create table stu(_id Integer primary key autoincrement,name varchar(20),grade integer)";
db.execSQL(sql);
含义:创建表 table stu,其中标的_id是编号,是主键,可自动增加,类型为整形,其他连个属性是name和grade 一个char型,一个整形
更新、查询等操作也可以使用sql语句通过execSQL 去操作,也可以使用下面函数
3.插入
ContentValues values=new ContentValues();
values.put("name", "Zhang");
values.put("grade", 5);
db.insert("stu", null, values);
4.删除
db.delete(stu, “name=? and tel=?”, new String[]{“Zhang”,”5”});
5.更新
函数操作
ContentValues values=new ContentValues();
values.put("name", "Zhang");
values.put("grade", 5);
db.update("stu", values, "_id=?", new String[]{"1"});
语句操作
String sql="update stu set name=? where _id=?";
db.execSQL(sql, new Object[]{"Zhang",1});
6.查询
Cursor cs=db.query("stu", new String[]{"*"}, "_id=?", new String[]{1+""}, null, null, null);
while(cs.moveToNext())
{
String name=cs.getString(cs.getColumnIndex("name"));
int grade=cs.getInt(2);
int _id=cs.getInt(cs.getColumnIndex("_id"));
}
二、继承SQLiteOpenHelper类
继承SQLiteOpenHelper类,并重写onCreate()和onUpgrade()
1.构造函数中创建数据库
private static final String DATA_BASE_NAME = "book.db";
private static final int DATE_BASE_VERSION = 1;
public DbOpenHelper(Context context) {
super(context, DATA_BASE_NAME, null, DATE_BASE_VERSION);
}
context是对应的上下文,DATA_BASE_NAME是数据库的名称,DATE_BASE_VERSION是数据库版本号
2.创建表
private final String CREATE_STUDENT_TABLE = "create table " + STUDENT_TABLE_NAME + "(_id integer primary key autoincrement,userName text,sex text,grade text)";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_STUDENT_TABLE);
}
onCreate中创建数据库表
3.增删改查
sqLiteDatabase = new DbOpenHelper(context).getWritableDatabase();
sqLiteDatabase.beginTransaction();
ContentValues contentValues = new ContentValues();
contentValues.put("bookName", "Computer");
sqLiteDatabase.insert(DbOpenHelper.BOOK_TABLE_NAME, null, contentValues);
sqLiteDatabase.setTransactionSuccessful();
sqLiteDatabase.endTransaction();
三、URI学习
1.创建URI
public static final String AUTHORITY = "com.example.admin.mycontenter.BookProvider";
public static final int BOOK_URI_CODE = 0;
private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHORITY, DbOpenHelper.BOOK_TABLE_NAME, BOOK_URI_CODE);
创建 URI 链接,AUTHORITY链接地址,DbOpenHelper.BOOK_TABLE_NAME链接地址后面添加的名字,如content//:com.example.admin.mycontenter.BookProvider/book;
BOOK_URI_CODE为根据链接查找是对应的ID号;
当URI没有添加时,得到的cursor 为空
Uri uri = Uri.parse("content://com.example.admin.mycontenter.BookProvider/grade");
Log.e("MainActivity", "test uri" );
Cursor cursor = this.getContentResolver().query(uri, null, null, null, null);
if(cursor == null){
Log.e("MainActivity", "test cursor is null" );
}
if(cursor != null){
if(cursor.moveToNext()){
Log.e("MainActivity", "test cursor next is not null" );
}
Log.e("MainActivity", "test cursor close" );
cursor.close();
}
2.ContentProvider解析URI
ContentProvider可以根据URI进行查询、插入等操作,其中getContentResolver()可以得到对应context环境的ContentProvider对象,如自己实现的继承ContentProvider的类的类
3.继承ContentProvider 类需要AndroidManifest中添加
<provider
android:authorities="com.example.admin.mycontenter.studentProvider"
android:name=".studentProvider"/>
今天测试发现该类会在Activity类前进行执行,并调用该类的onCreate函数