Android SqlLite 学习

今天学习了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函数

你可能感兴趣的:(Android,编程)