由于不大善于总结和撰写,所以很多概念都以
网络上参考学习为主,我会将这些知识融于到一个具体的练习中加以理解、巩固和分享。
今天要
学习的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实现
代码
//创建表publicboolean 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); returntrue; }catch(SQLException ex){ Log.d(tag, "create table failure"); returnfalse; } } //添加数据publicboolean 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); returntrue; }catch(SQLException ex){ Log.d(tag, "add data failure"); returnfalse; } } //修改publicboolean 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); returntrue; }catch(SQLException ex){ Log.d(tag, "update data failure"); returnfalse; } }
执行数据查询方法:db.rawQuery(sql, selectionArgs); 或者db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
代码 //查询publicvoid 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;