原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=1695&extra=page%3D2
由于不大善于总结和撰写,所以很多概念都以网络上参考学习为主,我会将这些知识融于到一个具体的练习中加以理解、巩固和分享。
今天要学习的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);
- }
复制代码