Android 创建数据库的几种方法

来源:互联网 发布:网络教育学校名单 编辑:程序博客网 时间:2024/05/16 06:12

SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。SQLite数据库对SQL规范的支持很全面,它支持大多数SQL标准,同时摒弃了一些复杂的功能,添加了一些自身的特性,下图是SQLite所支持的SQL语句类型:

 

下图是SQLite所定义的数据类型:

SQLite也支持SQL标准类型,VARCHAR、CHAR、BIGINT等。

创建数据库

Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以创建数据库。继承了SQLiteOpenHelper的子类,必须实现三个方法:

1、构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。

2、onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。

3、onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样可以清楚如何把一个数据库从旧的模型转变到新的模型。

如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class databaseAdapter extends SQLiteOpenHelper{
 
        public databaseAdapter(Context context, String name,
                CursorFactory factory, int version) {
            super(context, name, factory, version);
            // TODO Auto-generated constructor stub
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
             
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
             
        }
         
    }

还可以使用如下方法创建数据库:

1、Context.createDatabase(String name,int vision,int mode,CursorFactory factory);//创建一个新的数据库并返回一个SQLiteDatabase对象

2、SQLiteDatabase mydb = SQLiteDatabase.create(new CursorFactory() {
  @Override
  public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
    String editTable, SQLiteQuery query) {

    return null;
  }
});

3、SQLiteDatabase db = this.openOrCreateDatabase("mydb.db", MODE_PRIVATE, new CursorFactory() {
  @Override
  public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
    String editTable, SQLiteQuery query) {
      // TODO Auto-generated method stub
      return null;
  }
});

删除数据库

Context.deleteDatabase(String name);//删除指定名字的数据库

打开数据库

Context.openDatabase(String basename,CursorFactory factory);//打开一个存在的数据库,并返回SQLiteDatabase对象

非查询SQL指令

SQLiteDatabase.execSQLite(String sql);//可以用来执行非查询的SQL指令,这些指令执行后没有结果返回

查询SQL指令,游标cursors的使用

Cursor cursor = mydb.rawQuery(String sql,String[] selectionArg);//第一个参数为查询语句,第二个参数为查询语句中的占位符,若没有占位符,则第二个参数为null

0 0
原创粉丝点击