操纵SQLite

前端之家收集整理的这篇文章主要介绍了操纵SQLite前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库文件位于/data/data/你的程序的包名/databases/中,下图是一个例子

sqlite是Android平台软件开发中会经常用到的数据库产品,作为一款轻型数据库,sqlite的设计目标就是是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够。下面我们一起来看看针对Android平台的sqlite 3的使用。 以下概念都是在Android平台的sqlite限制下的理解: 数据库基础概念 ◆sqlite 通过文件来保存数据库,一个文件就是一个数据库。 ◆数据库里又包含数个表格; ◆每个表格里面包含了多个记录; ◆每个记录由多个字段组成; ◆每个字段都有其对应的值; ◆每个值都可以指定类型。 数据库名称文件名;表格有自己的名称;记录没有名称;每个字段都有名称。在sqlite中,记录没有顺序的概念,不存在第一、第二此类的概念;只能通过查询获取满足条件的记录。我们通过执行sql指令来操作数据库。 Android平台下数据库相关类 ◆sqliteOpenHelper 抽象类:通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数。 ◆sqliteDatabase 数据库访问类:执行对数据库的插入记录、查询记录等操作。 ◆sqliteCursor 查询结构操作类:用来访问查询结果中的记录。 1.创建和打开数据库 在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;创建成功则返回一个 sqliteDatabase对象,否则抛出异常FileNotFoundException。下面我们来创建一个名 为"Examples_06_05.db"的数据库,并返回一个sqliteDatabase对象 msqliteDatabase。 sqliteDataBase msqliteDataBase; 1. public class DataBaseHelper { DataBaseHelper (Context context) { super(context,DB_NAME,null,DB_VERSION);//null( CursorFactory factory) } } 2. DataBaseHelper mOpenHalper= new DataBaseHelper(this); 3. 1.msqliteDatabase=mOpenHelper.openOrCreateDatabase("Example_06_05.db",MODE_PRIVATE,null); //openOrCreateDatabase(String name,int mode,CursorFactory Factory) 2.创建表 一个数据库中可以包含多个表,我们的每一条数据都保存在一个指定的表中,要创建表可以通过execsql 方法来执行一条sql语句。execsql能够执行大部分的sql语句,下面我们来创建一个名为table1 且包含3个字段的表。 具体代码如下: 1. 1.StringCREATE_TABLE="CREATETABLEtable1(_idINTEGERPRIMARYKEY,numINTEGER,dataTEXT)"; 2. 2.msqliteDatabase.execsql(CREATE_TABLE); 3. //或者利用StringBuilder 2. StringBuilder sql = new StringBuilder(); 3. sql.append("CREATE TABLE "); 4. sql.append(TBL_NAME); 5. sql.append(" ("); 6. sql.append(FIELD_ID + " TEXT PRIMARY KEY NOT NULL,"); 7. sql.append(FIELD_NAME + " TEXT,"); 8. sql.append(FIELD_AGE + " INTEGER"); 9. sql.append(");"); 10. db.execsql(sql.toString()); 3.向表中添加一条数据 可以使用insert 方法添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中, ContentValues 其实就是一个Map, key值是字段名称, Value值是字段的值。通过 ContentValues 的 put 方法就可以把数据放到ContentValues中,然后插入到表中去。具体实现如下: Java代码 1. 1.ContentValuescv=newContentValues(); 2. 2.cv.put(TABLE_NUM,1); 3. 3.cv.put(TABLE_DATA,"测试数据"); 4. 4.msqliteDatabase.insert(TABLE_NAME,cv); 5. 5. 6. 6.//这样同样可以使用execsql方法来执行一条“插入”的sql语句,代码如下: 7. 7.StringINSERT_DATA="INSERTINTOtable1(_id,num,data)values(1,1,'通过sql语句插入')"; 8. 8.msqliteDatabase.execsql(INSERT_DATA); 4.从表中删除数据 要删除数据可以使用delete 方法,下面我们删除字段 "_id" 等于1的数据,具体代码如下: 1. 1.msqliteDatabase.delete("Examples_06_05.db","where_id="+0,null); 2. 2.通过execsql方法执行sql语句删除数据如下: 3. 3.StringDELETE_DATA="DELETEFROMtable1WHERE_id=1"; 4. 4.msqliteDatabase.execsql(DELETE_DATA); 5.修改表中的数据 如果添加了数据后发现数据有误,这时需要修改这个数据,可以使用updata方法来更新一条数据。下面我们来修改 "num" 值为0的数据,具体代码如下: 1. 1.ContentValuescv=newContentValues(); 2. 2.cv.put(TABLE_NUM,3); 3. 3.cv.put(TABLE_DATA,"修改后的数据"); 4. 4.msqliteDatabase.update("table1"cv,"num"+"="+Integer.toString(0),null); 6.关闭数据库 关闭数据库很重要,也是大家经常容易忘记的。关闭方法很简单,直接使用sqliteDatabase 的 close 方法。具体代码如下: 1. msqliteDatabase.close(); 7.删除指定表 这里我们使用execsql方法来实现,具体代码如下: 1.msqliteDatabase.execsql("DROPTABLEtable1"); 8.删除数据库删除一个数据库,直接使用deleteDatabase 方法即可,具体代码如下: 1. 1.this.deleteDatabase("Examples_06_05.db"); 9.查询表中的某条数据 在Android中查询数据是通过Cursor类来实现的,当我们使用sqliteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询方法,具体方法如下: 方法 说明 move 以当前的位置为参考,将Cursor移动到指定的位置,成功返回true,失败返回false moveToPosition 将Cursor移动到指定的位置,成功返回true,失败返回false moveToNext 将Cursor向前移动一个位置,成功返回true,失败返回false moveToLast 将Cursor向后移动一个位置,成功返回true,失败返回 false。 movetoFirst 将Cursor移动到第一行,成功返回true,失败返回false isBeforeFirst 返回Cursor是否指向第一项数据之前 isAfterLast 返回Cursor是否指向最后一项数据之后 isClosed 返回Cursor是否关闭 isFirst 返回Cursor是否指向第一项数据 isLast 返回Cursor是否指向最后一项数据 isNull 返回指定位置的值是否为null getCount 返回总的数据项数 getInt 返回当前行中指定的索引数据 下面我们就是用Cursor来查询数据库中的数据,具体代码如下: 1. 1.Cursorcur=msqliteDatabase.rawQuery("SELECT*FROMtable",null); 2. 2.if(cur!=null){ 3. 3.if(cur.moveToFirst()){ 4. 4.do{ 5. 5.intnumColumn=cur.getColumnIndex("num"); 6. 6.intnum=cur.getInt(numColumn); 7. 7.}while(cur.moveToNext()); 8. 8.} 9. 9.} 10. //或这样实现 11. String[] col[] = new String[] {"stu_no","stu_name"} 12. Cursorcur=msqliteDatabase.query("student",col,null); 13. if(cur.moveToFirst()){ 14. while(cur.moveToNext()){ 15. Stringname=cursor.getString(cur.getColumnIndex("name")); 16. System.out.println("query--->"+name); 17. } } 最后在提醒大家一句: 使用sqliteDatabase数据库要及时关闭(close),否则可能会抛出sqliteException异常。

猜你在找的Sqlite相关文章