认识SQLite数据库

要利用SQLite数据库存储数据,必须先创建数据库方法来实现。要存储数据,则需要先在数据库中创建数据表(Table)。我们可以把数据表视为一个二维的表格,例如简单的通讯数据表可能有如下内容:

name phone email
张三 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);    //将数据加到数据表
    }

}
原文地址:https://www.cnblogs.com/lan-xin/p/8469428.html