Android下最好的数据储存方式:关系型数据库sqlite。

数据库的创建:使用SqliteOpenHelper类

结合SqliteOpenHelper类和SQLiteDatabase类的帮助,我们可以方便地对数据库进行CURD操作。

数据库的创建:

我们主要通过在SqliteOpenHelper类的onCreate方法中创建数据库表。

那么,onCreate方法又是在什么时候执行的呢?

我们先写一下代码:

package com.whathecode.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper{public static final String CREATE_TABLE = "create table student("+ "id integer primary key," + "age integer," + "name char(20))";public DatabaseHelper(Context context){super(context, "dbsample.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db){db.execSQL(CREATE_TABLE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}}

通过上面的代码,我们可以创建一个dbsample.db的数据库。

实际上,当我们通过new关键字创建这个类的实例的时候,数据库文件并没有被创建出来。

事实上是,数据库是我们第一次连接的时候创建的。

亦即是通过SqliteOpenHelper的getReadableDatabase()方法或者getWritableDatabase方法的时候创建

SqliteOpenHelper的onCreate方法也是在这个时候执行。

因此,我们可以在onCreate方法中创建需要的表。

下面是MainActivity的代码:

package com.whathecode.sqlitedemo;import android.app.Activity;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import com.whathecode.db.DatabaseHelper;public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//执行到这行的时候数据库没有被创建DatabaseHelper dbh = new DatabaseHelper(this);//当执行到这行的时候数据被被创建出来SQLiteDatabase readableDatabase = dbh.getReadableDatabase();}}

创建好数据库后,我们就可以对数据库进行CURD操作。

向数据库中插入数据:

使用SQLiteDatabase类中execSQL的方法,我们可以方便地操作数据库:

注意getReadableDatabase返回的数据库对象是只读的。

现在我们需要写入数据库,就需要调用getWritableDatabase方法

更新后的MainActivity代码:

package com.whathecode.sqlitedemo;import android.app.Activity;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.widget.Toast;import com.whathecode.db.DatabaseHelper;public class MainActivity extends Activity{SQLiteDatabase readableDatabase = null;DatabaseHelper dbh = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//执行到这行的时候数据库没有被创建 dbh = new DatabaseHelper(this);//当执行到这行的时候数据被被创建出来readableDatabase = dbh.getReadableDatabase();}public void insertData(View view){SQLiteDatabase writableDatabase = dbh.getWritableDatabase();if (writableDatabase.isOpen()){for (int i = 0; i < 20; i++){//执行数据插入操作writableDatabase.execSQL("insert into student values(?,?,?);",new Object[] { i + 2, 10 + i, "android " + i });}writableDatabase.close();Toast.makeText(this, "数据插入成功", Toast.LENGTH_SHORT).show();}}}

看一下运行结果:

Android下的数据储存方式(三)_第1张图片

现在,我们使用sqlite3工具看看数据是否真的被插入了

Android下的数据储存方式(三)_第2张图片

看到了吧,数据一条不少被插入了.

SqliteDatabase类除了execSQL方法外还有其他的方法可以操作数据库:

  • create(SQLiteDatabase.CursorFactory factory)
  • delete(String table, String whereClause, String[] whereArgs)
  • query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
  • rawQuery(String sql, String[] selectionArgs)

当使用execSQL执行任何的查詢语句都是没有返回结果的。

如果想返回结果,就要使用rawQuery方法。

当然,上面这些只是部分方法,其他的大家可以到官网查看API

其他的数据库查找,更新,删除操作都只是依瓢画葫芦。大家可以自行研究一下。

更多相关文章

  1. android中将数据写入手机内存和sdcard中的文件
  2. Android settings.db数据库中添加一条新的默认配置项
  3. Android之解析Json数据
  4. Android建立对话框基本的几种方法
  5. 2种自定义android标题栏titleBar的方法

随机推荐

  1. 鑷紪Win8椋庢牸Android闊充箰鎾斁鍣
  2. Handler机制详述1---Handler的简介和用法
  3. 麦子学院android开发笔记:Android更换Rati
  4. Android之Gallery控件使用
  5. Xamarin向iOS和Android引入C# Async支持
  6. 在没有内置Google Map add-on的Android真
  7. [原] Android 自定义View步骤
  8. [置顶] Android 4.2 Wifi Display核心分
  9. Android Activity间数据传输
  10. Android(安卓)windowSoftInputMode属性