sqlite的创建,新建一个类dbHelper继承SqliteOpenHelper。
实现构造方法、oncrate、onupgrade方法。
再回到MainActivity。
sqLiteOpenHelper = new dbHelper(this,"login.db",null,VERSION_ONE); db = sqLiteOpenHelper.getReadableDatabase();
new dbHelper。传入上下文参数、数据库名字、null、版本号。
最后获取SqliteDatabase对象。
db执行增删改查有insert、delete、update、rawQuery方法。
小细节:
contentValues = new ContentValues();
contentValues.put("username","seven");
contentValues.put("password","123456");
contentValues.put("age","20");
contentValues.put("flag", "0");
db.insert("user", null, contentValues);
contentValues.clear();
ContentValues的put方法执行完后、clear清除掉数据以便下面的使用。
Cursor cursor = db.query("user", null, null, null, null, null, null);
if (cursor.moveToFirst()){
do {
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
int flag = cursor.getInt(cursor.getColumnIndex("flag"));
Log.d("seven","username = "+username);
Log.d("seven","flag = "+flag);
}while (cursor.moveToNext());
}
查询的时候,要用cursor获取数据时不知道索引可以先调用getColumnIndex来获取索引。
sqlite的数据类型:
NULL | 值是一个 NULL 值。 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储。 |
升级数据库的方法:
public class DBHelper extends SQLiteOpenHelper {
private static String name="data.db";
private static int version=1;
public DBHelper(Context context) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user( _id integer primary key autoincrement, " +
"name text , desc text);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion){
case 1:
db.execSQL("v1版本时数据库升级操作"); //旧版本的数据库神级操作的case语句后都没有break语句,
//这样便可以确保每一次升级当前版本到最新版本的更新操作都可以被执行到了
case 2:
db.execSQL("v1——v2版本数据库升级操作");
case 3:
db.execSQL("v2——v3版本数据库升级操作");
//v3版本为当前最新数据库版本
break;
}
}
}