*** 纵SQLite

 *** 纵SQLite,第1张

概述 数据库文件位于/data/data/你的程序的包名/databases/中,下图是一个例子 SQLite是Android平台软件开发中会经常用到的数据库产品,作为一款轻型数据库,SQLite的设计目标就是是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够。下面我们一起来看看针对Android平台的SQlite 3的使用。 以下概念都 数据库文件位于/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全部内容,希望文章能够帮你解决 *** 纵SQLite所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1176823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存