要利用SQLite数据库存储数据,必须先创建数据库方法来实现。要存储数据,则需要先在数据库中创建数据表(Table)。我们可以把数据表视为一个二维的表格,例如简单的通讯数据表可能有如下内容:
name | phone | |
张三 | 6666666 | zs@example.com |
李四 | 7777777 | ls@example.com |
王五 | 8888888 | ww@example.com |
纵向的一列称为字段,代表着一项特定意义的数据,例如“name”栏用来存储客户的名称。
横向的一行则称为记录,每一个记录都存储着一组完整的数据。
使用CREATE TABLE 语句创建数据表
创建数据表的SQL语句为“CREATE TABLE”,语法如下
CREATE TABLE 数据表名称 (字段名 数据类型 PRIMARY KEY, 字段名 数据类型 , 主键 ……)
使用openOrCreateDatabase()创建数据库
在项目的MainActivity类,有一个openOrCreateDatabase()方法可创建及打开数据库,如名称所示,此方法会打开参数所指的数据库,若数据库不存在,则会先创建再打开它,其参数如下:
openOrCreateDatabase("customer",//数据库名称 Context.MODE_PRIVATE, //创建数据库文件的模式 null); //返回查询结果的类
openOrCreateDatabase()执行成功会返回代表数据库的SQLiteDatebase 对象。
用execSQL()方法执行CREATE TABLE 语句
使用SQLiteDatabase 对象创建数据表,必须用前面介绍的CREATE TABLE 语句作为参数,调用execSQL()方法,例如:
SQLiteDatabase db = openOrCreateDatabase(……);//获取数据库对象 String sql = "CREATE TABLE test " + //创建”test"数据表的SQL语法字符串 "(name VARCHAR(32), "+" phone VARCHAR(32),"+"email VARCHAR(32))";
db.execSQL(sql);//执行上面的CREATE TABLE 语句
用insert()方法和ContentValues 对象新增数据
ContentValues cv = new ContentValues(3); //创建含3个字段的ContentValues对象 cv.put("name","张三"); //name字段为”张三“ cv.put("phone","6666666"); //phone字段为"6666666" cv.put("email","zs@example.com"); //email 字段为”zs@example.com" db.insert("customers",null,cv) //将上列内容写入customers数据表,新增1个记录
package com.example.hellosqlite; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.TextView; public class MainActivity extends ActionBarActivity { static final String db_name = "testDB"; //数据库名称 static final String tb_name = "test"; // 数据表名称 SQLiteDatabase db; //数据库对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //打开或创建数据库 db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE,null); String createTable = "CREATE TABLE IF NOT EXISTS " + tb_name + "(name VARCHAR(32)," + "phone VARCHAR(16)," + "email VARCHAR(64))"; db.execSQL(createTable); //创建数据表 //调用自定义的addData()方法 写入2组数据 addData("Flag Publishing Co.","6666666","service@flag.com.tw"); addData("PCDIY Magazine","7777777","service@flag.com.tw"); TextView txv = (TextView) findViewById(R.id.txv); txv.setText("数据库文件路径:" + db.getPath() +" "+ "数据库分页大小:" +db.getPageSize()+"Byte "+ "数据量上限:"+db.getMaximumSize()+" Byte "); db.close(); //关闭数据库 } private void addData(String name,String phone,String email) { ContentValues cv = new ContentValues(3); //创建含3个数据项的对象 cv.put("name",name); cv.put("phone",phone); cv.put("email",email); db.insert(tb_name,null,cv); //将数据加到数据表 } }