• Android 操作 Sqlite3数据库


    SQLite 数据库功能非常强大,使用起来也非常方便,SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。下面我们分别来学习这些基本操作。

      1.创建和打开数据库
      在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;创建成功则返回一个 SQLiteDatabase对象,否则抛出异常FileNotFoundException。下面我们来创建一个名为"Examples_06_05.db"的数据库,并返回一个SQLiteDatabase对象 mSQLiteDatabase。、

    view plaincopy to clipboardprint?
    1. mSQLiteDatabase = this.openOrCreateDatabase("Example_06_05.db", MODE_PRIVATE, null);   

    2.创建表
       一个数据库中可以包含多个表,我们的每一条数据都保存在一个指定的表中,要创建表可以通过execSQL 方法来执行一条SQL语句。execSQL能够执行大部分的SQL语句,下面我们来创建一个名为table1 且包含3个字段的表。 具体代码如下:

    view plaincopy to clipboardprint?
    1. String CREATE_TABLE = "CREATE TABLE table1 (_id INTEGER PRIMARY KEY, num INTEGER,  data TEXT)";    
    2. mSQLiteDatabase.execSQL(CREATE_TABLE);    
       

    3.向表中添加一条数据
        可以使用insert 方法来添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中, ContentValues 其实就是一个Map, key值是字段名称, Value值是字段的值。通过 ContentValues 的 put 方法就可以把数据放到ContentValues中,然后插入到表中去。具体实现如下:

    Java代码
    view plaincopy to clipboardprint?
    1. ContentValues  cv  =  new ContentValues();    
    2. cv.put(TABLE_NUM, 1);    
    3. cv.put(TABLE_DATA, "测试数据");    
    4. mSQLiteDatabase.insert(TABLE_NAME, null, cv);    
    5.     
    6.   //这样同样可以使用execSQL方法来执行一条“插入”的SQL语句,代码如下:    
    7. String  INSERT_DATA = "INSERT INTO table1 (_id, num, data) values (1, 1, '通过SQL语句插入')" ;    
    8. mSQLiteDatabase.execSQL(INSERT_DATA);    
       

    4.从表中删除数据
         要删除数据可以使用delete 方法,下面我们删除字段 "_id" 等于1的数据,具体代码如下:
    view plaincopy to clipboardprint?
    1. mSQLiteDatabase.delete("Examples_06_05.db", " where_id="+0, null);    
    2. 通过 execSQL方法执行SQL语句删除数据如下:    
    3. String  DELETE_DATA = "DELETE FROM table1 WHERE _id=1";    
    4. mSQLiteDatabase.execSQL(DELETE_DATA);    
      

    5.修改表中的数据
        如果添加了数据后发现数据有误,这时需要修改这个数据,可以使用updata方法来更新一条数据。下面我们来修改 "num" 值为0的数据,具体代码如下:
    view plaincopy to clipboardprint?
    1. ContentValues cv = new ContentValues();    
    2. cv.put(TABLE_NUM, 3);    
    3. cv.put(TABLE_DATA, "修改后的数据");    
    4. mSQLiteDatabase.update("table1" cv, "num " + "=" + Integer.toString(0), null);    
      

    6.关闭数据库
         关闭数据库很重要,也是大家经常容易忘记的。关闭的方法很简单,直接使用SQLiteDatabase 的 close 方法。具体代码如下:
    view plaincopy to clipboardprint?
    mSQLiteDatabase.close();    
       

    7.删除指定表
        这里我们使用execSQL方法来实现,具体代码如下:
    view plaincopy to clipboardprint?
    1. mSQLiteDatabase.execSQL("DROP TABLE table1");    
       

    8.删除数据库
        要删除一个数据库,直接使用deleteDatabase 方法即可,具体代码如下:
    view plaincopy to clipboardprint?
    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来查询数据库中的数据,具体代码如下:
    view plaincopy to clipboardprint?
    1. Cursor cur = mSQLiteDatabase.rawQuery("SELECT * FROM table", null);    
    2. if( cur != null ){    
    3.    if( cur.moveToFirst() ){    
    4.        do{    
    5.                   int numColumn = cur.getColumnIndex("num");    
    6.                   int num            = cur.getInt(numColumn);    
    7.             }while( cur.moveToNext());    
    8.       }    
    9.  }    
      

    最后在提醒大家一句:    使用SQLiteDatabase数据库要及时关闭(close), 否则可能会抛出SQLiteException异常。

  • 相关阅读:
    2017-2018 20155309南皓芯 信息安全系统基础设计第十三周博客
    2017-2018-1 20155309 《信息安全系统设计基础》实验五 通信协议设计
    20155309南皓芯《信息安全系统设计基础》实验四:外设驱动设备设计 实验报告
    2017-2018 20155309 南皓芯 信息安全基础设计第十一周博客
    2017-2018 20155309 南皓芯 信息安全基础设计第十周博客
    2017-2018 20155309南皓芯实验三实时系统
    linux pwd指令C实现
    2017-2018 20155309 南皓芯 信息安全基础设计第九周博客
    2017-2018-1 20155304 《信息安全系统设计基础》第十四周学习总结
    20155304 《信息安全系统设计基础》第十三周学习总结
  • 原文地址:https://www.cnblogs.com/webcyz/p/2728657.html
Copyright © 2020-2023  润新知