[置顶] android SQLite操作

发布时间:2014-10-22 13:10:00编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"[置顶] android SQLite操作",主要涉及到[置顶] android SQLite操作方面的内容,对于[置顶] android SQLite操作感兴趣的同学可以参考一下。

                                 SQLite 一、SQLite简介:           SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 二、SQLite具备下列特点:             1.轻量级。使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸相当小。             2.独立性。SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。             3.隔离性。SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。             4.跨平台。SQLite 目前支持大部分操作系统,不止电脑操作系统更在众多的手机系统也是能够运行,比如:Android。             5.多语言接口。SQLite 数据库支持多语言编程接口。             6.安全性。SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。 三、Android中的SQLite使用          1、SQLiteDatabase类:                SQLiteDatabase是一个数据库实例类, 它提供了一系列的方法管理, 操作数据库             (1) 创建数据库:                    a)Static SQLiteDatabase openDatabase(String path, CursorFactory f,int flags);                   打开由path指定的SQLite数据库                     b)Static SQLiteDatabase openOrCreateDatabase(File file, CursorFactory f);                   打开或创建由file指定的SQLite数据库                      c)Static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory f);                   打开或创建由path指定的SQLite数据库              (2) 操作数据库:                      a)    execSQL(String sql, Object[] bindArgs);                       执行带占位符的SQL语句, 第二个参数表示SQL语句占位符对应的参数                      b)    execSQL(String sql);                      执行SQL语句                      c)    rawQuery(String sql, String[] selectionArgs);                     带占位符的查询语句, 第二个参数表示查询语句占位符对应的参数                       d)    Insert(String table, String nullColumnHack, ContentValue value);                          参数:                       Table: 表名, nullColumnHack: 表明强行插入null值的数据列的列名,                       value: 代表一行记录数据                             (ContentValue)类相当于Map, 提供put(String key, XXX value);存入数据, getXXX(key)用于取出数据                   e)    update(String table, ContentValues values, String whereClause, String[] whereArgs);                       参数:                                   ContentValues: 你需要更新个数据组成的一个map,由列的名字和列的新值构成,null是合法的值,会被转化为NULL;                                     whereClause: SQL语句中的where子句, 满足whereClause的将被更新,                                     whereArgs: 字符串数组,和whereClause配合使用。有两种用法,如果whereClause的条件已经直接给出,如“class = “ + num,num是传入的参数,则whereArgs可设为null。如果是”class = ?“,则?会被whereArgs这个数组中对应的值替换,whereArgs给出?代表的值,有多个?的,字符串数组里的值依次填入。                      f)     delete (String table, String whereClause, String[] whereArgs);                        table:表名;whereClause:删除的条件,用法和update里的一样。如果为null,则删除全部行。          whereArgs:用法和update里的一样。                        g)    query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)                    对指定的表进行查询                       h)    query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)                    对指定表进行查询, 第一个参数表示是否去掉重复值, limit控制查询记录数(用于分页)                         i)     query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)                    对指定表进行查询                    table:表名称                    colums:列名称数组                    selection:条件子句,相当于where                    selectionArgs:条件语句的参数数组                    groupBy:分组                    having:分组条件                    orderBy:排序类                    limit:分页查询的限制                    Cursor:返回值,相当于结果集ResultSet                 j)     BeginTransaction(); 开始事务                 k)    EndTracsaction(): 结束事务                 其中结束事务时, 是提交事务还是回滚事务, 取决于是否调用setTransactionSuccessful()来设置事务标志, 如果程序事务中调用了该方法设置成功则提交事务, 否则将会回滚事务;   四、Cursor类         Cursor类似于jDBC中的ResultSet类用于记录查询结果, 提供如下方法:                 (1) move(int offset);将记录指针向上或向下移动指定行数, offset为负表示向上移动, offset为正数表示向下移动                 (2) boolean moveToFirst();将记录指针移动到第一行                 (3) boolean moveToLast();将记录指针移动到最后一行                 (4) boolean moveToNext();将记录指针移动到下一条记录                 (5) boolean moveToPosition(int position);将记录指针移动到指定行                 (6) boolean moveToPrevious();将记录指针移动到上一行.                 (7) getXXX(); 获取一行记录中指定列的数据                 (8)getCount()    总记录条数                 (9)isFirst()   判断是否第一条记录                 (10)isLast()判断是否最后一条记录                 (11)SQLiteOpenHelper类介绍               实现代码:                       Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标                   if(c.moveToFirst()){//判断游标是否为空                                  for(int i=0;i<c.getCount();i++){                                                c.move(i);//移动到指定记录                                               String username = c.getString(c.getColumnIndex("username");                                                   String password = c.getString(c.getColumnIndex("password"));                                    }                     }                    //通过rawQuery实现的带参数查询                    Cursor c = db.rawQuery("select * from user where username=?",new Stirng[]{"Jack Johnson"});                     if(cursor.moveToFirst()) {                                        String password = c.getString(c.getColumnIndex("password"));                        }   五、SQLiteOpenHelper            SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。                  onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。                onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。   SQLiteOpenHelper的其他方法:               SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)                   构造方法,一般是传递一个要创建的数据库名称,和版本号参数                 onCreate(SQLiteDatabase db)创建数据库时调用                  onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)版本更新时调用                  getReadableDatabase()创建或打开一个只读数据库                 getWritableDatabase()创建或打开一个读写数据库                 Synchronized void close();  关闭所有打开的SQLiteDatabase   例: public class DatabaseHelper extends SQLiteOpenHelper {               private static final String DB_NAME = "mydata.db"; //数据库名称               private static final int version = 1; //数据库版本               public DatabaseHelper(Context context) {    //创建数据库                                super(context, DB_NAME, null, version);                }               @Override                public void onCreate(SQLiteDatabase db) {   //数据库初始化                                     String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";                                     db.execSQL(sql);                   }                    @Override                    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    //版本号不同时,执行的操作                        }   }    创建数据库:        (调用getWriteableDatabase可能因为磁盘空间或权限问题失败,所以,一个好的习惯是在捕获异常后提供getReadableDatabase方法的结果)   DatabaseHelper database = new DatabaseHelper(this); //这段代码放到Activity类中才用this  SQLiteDatabase db = null;  db = database.getReadalbeDatabase();  //打开数据库 ------对数据库进行操作 db = database.close();  //关闭数据库        


上一篇:Shunsaku 应用场景 概要
下一篇:this.options[selectedIndex]的使用

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款