由于不大善于总结和撰写,所以很多概念都以网络上参考学习为主,我会将这些知识融于到一个具体的练习中加以理解、巩固和分享。
今天要学习的SQLite个人感觉和以前使用的sql server,比较基础的东西都大同小异,基本的创建数据库表、对数据的增删改查的语句都差不多,如果懂得sql server的人学习SQLite应该还是容易上手的。唯一感觉不习惯的是,初次了解SQLite,在网上看别人的示例时,总感觉得很混乱,其实原因在于同样实现一个数据的增删改查,是有几种不同方法的。例如插入数据:有使用SQLiteDataBase对象执行sql语句方法db.execSQL(sql);或者db.insert(table, nullColumnHack, values);也有content provide和content Resolver搭配使用的(数据库提供对外访问 和 提供从外数据访问)。
如果一个应用程序中的数据库无需提供对外访问,实现一个继承自SQLiteOpenHelper的数据库帮助类,以支持数据库的创建和版本的更新,这些SQLiteDataBase所不能实现的.但是SQLiteDataBase却具备一些非常重要的对数据库进行操作的方法,数据表的创建删除、数据的增删改查都是通过它实现的。
执行增删改操作方法 :db.execSQL(sql); 或者db.insert()、db.delete()、db.update(),并且包括数据表的创建和删除等等也可以通过execSQL实现
public boolean createTable(){
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = " CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY,Name VARCHAR,Age INTEGER) " ;
try {
db.execSQL(sql);
return true ;
} catch (SQLException ex){
Log.d(tag, " create table failure " );
return false ;
}
}
// 添加数据
public boolean addData(){
String name = etname.getText().toString();
String age = etage.getText().toString();
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = " insert into " + TABLE_NAME + " (name,age) values (' " + name + " ',' " + age + " ') " ;
try {
db.execSQL(sql);
return true ;
} catch (SQLException ex){
Log.d(tag, " add data failure " );
return false ;
}
}
// 修改
public boolean updateData(){
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = " update " + TABLE_NAME + " set age='2' where name like 'cb' " ;
Object[] bindArgs = { " cb " };
try {
db.execSQL(sql, bindArgs);
return true ;
} catch (SQLException ex){
Log.d(tag, " update data failure " );
return false ;
}
}
执行数据查询方法:db.rawQuery(sql, selectionArgs); 或者db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
public void selectData(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] columns = { " name " };
Cursor cursor = db.query(TABLE_NAME, columns, null , null , null , null , null );
String names = "" ;
while (cursor.moveToNext()){
int c = cursor.getColumnIndexOrThrow( " Name " );
String name = cursor.getString(c);
// < = >
// String name=cursor.getString(0); // 只查询了一列
if (names == "" ){
names = name;
} else {
names = names + " \n " + name;
}
}
tvname.setText(names);
// 另外一种查询方法
// String sql="select name from "+TABLE_NAME;
// Curosr cursor=db.rawQuery(sql, null);
}