SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。在android中当需要操作SQLite数据库的时候简单的方法是得到一个SQLiteOpenHelper对象,而SQLiteOpenHelper是一个抽象类,用户需要继承这个类,并实现该类中的一些方法。在该类中必须要有一个构造函数:
public MySqlitedataBase(Context context, String name,
CursorFactory factory, int version)
{
super(context, name, factory, version);
}
该构造函数中第二个参数为数据库文件的名称,第三个参数一般为null,第四个参数为创建的数据库的版本。为了使用方便还可以添加只有两个个或三个参数的构造函数。另外该类还需要复写两个回调函数:
@Override
public void onCreate(SQLiteDatabase db)
{
System.out.println("创建了一个数据库:" + getDatabaseName());
db.execSQL("create table user(id int,name varchar(20), age int,sex boolean)");
}
onCreate是在第一次创建数据库的时候回调该函数,可以根据需要在里面实现功能,上面的代码就是在数据库中创建了一个名为user的表,表中可存储四列数据分别为id,name,age,sex。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
System.out.println("数据库" + getDatabaseName() + "升级了:" + oldVersion + "----->" + newVersion);
}
onUpgrade是在数据库的版本升级之后回调的函数,一般我们在这个方法里面删除数据库表并建立新的数据库表,当然还是根据实际需要来编写。
SQLiteOpenHelper的实现类编写完毕后就可以在其他需要进行数据操作的地方得到该实现类的对象:
MySqlitedataBase myDataBase = new MySqlitedataBase(this,"Yuan_DB",null,1);
SQLiteDatabase dataBase = myDataBase.getReadableDatabase();
以上代码中创建了一个名为Yuan_DB的数据库,其版本为1,并通过
SQLit
eOpenHelper的实现类得到到一个SQLiteDatabase对象,该对象就代表一个数据库,上文中使用的是getReadableDatabase()方法,只能对数据可进行查询操作,如果需要写入或是改写则需使用getWritableDatabase()方法。
数据库的增 删 改 查。
向数据库中插入数据需要ContentValues作为载体在调用SQLiteOpenHelper对象的insert方法。:
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "XX");
values.put("sex", true);
values.put("age", 24);
long ID = dataBase.insert("user", null, values);
System.out.println("插入数据的行的ID:" + ID);
values.clear();
values.put("id", 2);
values.put("name", "OO");
values.put("sex", false);
values.put("age", 28);
long ID_2 = dataBase.insert("user", null, values);
System.out.println("插入数据的行的ID:" + ID_2);
values.clear();
values.put("id", 3);
values.put("name", "XXOO");
values.put("sex", false);
values.put("age", 18);
long ID_3 = dataBase.insert("user", null, values);
System.out.println("插入数据的行的ID:" + ID_3);
上面的代码中向数据库中插入了三行数据,insert方法的返回值为插入数据在表中所处的行数。
数据的更改:
ContentValues values = new ContentValues();
values.put("name", "XOXO");
dataBase.update("user", values, "name = ?", new String[]{"XXOO"});
update方法中第一个参数为表名,第二个为修改的数据,第三个为要数据库中要修改的列名,第四个则为具体要修改的值。
数据的查询:
Cursor cursor = dataBase.query("user", new String[]{"id","name","age","sex"},
"name = ?", new String[]{"XOXO"}, null, null, null);
while(cursor.moveToNext())
{
StringBuilder string = new StringBuilder();
string.append(cursor.getString(cursor.getColumnIndex("id")) + " ");
string.append(cursor.getString(cursor.getColumnIndex("name")) + " ");
string.append(cursor.getString(cursor.getColumnIndex("age")) + " ");
string.append(cursor.getString(cursor.getColumnIndex("sex")));
System.out.println("查询出的数据:" + string);
}
使用query方法就可以对数据库进行查询,该方法第二个参数为查询结果中要包含的哪些列,其余参数与update类似。该方法返回一个cursor对象,该对象中可以根据列名来去除查询的结果。