SQLite数据库操作

安卓中创建数据库的步骤:
1、写一个类MyOpenHelper继承SQLiteOpenHelper类
2、覆写其中的OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
3、创建数据库:
  1. MyOpenHelper helper = new MyOpenHelper(this);
  2. //创建数据库 需要调用 getReadableDatabase 或 getWritableDatabase
  3. helper.getReadableDatabase();//返回的数据类型为SQLiteDatabase可以将其传给OnCreate(SQLiteDatabase db)
注:OnCreate(SQLiteDatabase db)是在数据库创建的时候调用的,主要用来初始化数据表结构和插入数据初始化的记录
        onUpGrade是在数据库版本升级的时候调用的,主要用来改变表结构
安卓中的增删改查操作:在android应用程序中使用db.execSQL("sql",bindArgs)操作增删改查语句;
注:db为创建的数据库
  1. public void onCreate(SQLiteDatabase db) {
  2. //注:(_id是google推荐的)
  3. db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20))");
  4. }

常用的数据库操作:
         创建表结构:create table person (id integer primary key autoincrement,name varchar(20));
 插入:insert into person (name)values("lisi");
 查询:select * from person;
 更新:update person set name='wangwu' where id=1
 删除:delete from person where id=1

官方提供的安卓操作数据库的方法:
插入:insert(String table, String nullColumnHack, ContentValues values)
                注:ContentValues的构造方法中建立了一个构造了一个HashMap集合
                        查源码得该方法的低层是组拼了一个sql语句并将value
                        经过查看源码可知,nullColumnHack是在 values为空的时候才用的到,一般情况下我们是不会将values设置为空的所以该参数一般为null
  1. ContentValues values = new ContentValues ();
  2. values.put("name", "张飞");
  3. values.put("number","120");
  4. db.insert(table,null, values);
  5. db.close();

查询:query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
                            注:columuns表示要查询的列,null表示查询所有
                                    selection表示查询的条件
                                    selectionArgs表示选择条件的参数
                                    groupBy分组、having分组条件、orderBy排序、limit限制
            返回值类型为Cursor    注:游标是从上往下逐行扫描
  1. //首先对cursor 进行判断
  2. if (cursor!=null && cursor.getCount()>0) {
  3. //循环取所有数据
  4. while(cursor.moveToNext()){
  5. }
  6. }                       
删除:delete(String table, String whereClause, String[] whereArgs)
  1. /**
  2. * whereClause 删除条件
  3. * whereArgs 删除条件的参数
  4. */
  5. int delete = db.delete("info", "name=?", new String[]{name});




eclipse中的代码模板:






得到SQLite数据库的几种常见的方法:
static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler)
Open the database according to the flags OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY and/or NO_LOCALIZED_COLLATORS.
static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags)
Open the database according to the flags OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY and/or NO_LOCALIZED_COLLATORS.
static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)
Equivalent to openDatabase(path, factory, CREATE_IF_NECESSARY, errorHandler).
static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)
Equivalent to openDatabase(path, factory, CREATE_IF_NECESSARY).
static SQLiteDatabase openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)
Equivalent to openDatabase(file.getPath(), factory, CREATE_IF_NECESSARY).




posted @ 2015-01-26 00:36  就不呵呵呵  阅读(192)  评论(0编辑  收藏  举报