android | SQLite初使用

按照惯例,百度一下:地址 官网地址
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如TclPHPJavaC++.Net等,还有ODBC接口,同样比起 MysqlPostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

特点

  • 轻量级
    SQLiteC/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows487KBLinux347KB

  • 不需要”安装”
    SQLite的核心引擎本身不依赖第三方的软件,使用它也不需要”安装”。有点类似那种绿色软件。

  • 单一文件
    数据库中所有的信息(比如表、视图等)都包含在一个文件内。这个文件可以自由复制到其它目录或其它机器上。

  • 跨平台/可移植性
    除了主流操作系统 windowslinux之后,SQLite还支持其它一些不常用的操作系统。

  • 弱类型的字段
    同一列中的数据可以是不同类型

  • 开源

数据类型

SQLite采用的是动态数据类型,会根据存入值自动判断。

数据类型 描述
NULL这个值为空值
VARCHAR(n)长度不固定且其最大长度为 n 的字串,n不能超过 4000。
CHAR(n)长度固定为n的字串,n不能超过 254。
INTEGER值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改 变格式。
DATA包含了 年份、月份、日期。
TIME 包含了 小时、分钟、秒。

SQLite创建和打开数据库的简单使用

方式一:继承SQLiteOpenHelper

继承 SQLiteOpenHelper 打开或创建数据库。(打开链接,可以看见这是一个抽象类,故而我们需要继承它)

按照Mars视频讲解,这里我先看能否创建成功数据库。
先写一个类DatabaseHelper继承SQLiteOpenHelperDatabaseHelper.java

package com.weizu.intent;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    //Create a helper object to create, open, and/or manage a database.
    public DatabaseHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);

    }

    //Called when the database is created for the first time.
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table weizu(id int, name varchar(20), age int)");
    }

    //Called when the database needs to be upgraded.
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

然后在MainActivity.java中简单创建表:
布局文件就是一个Button,这里就不给出了。
MainActivity.java

package com.weizu.intent;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.weizu.intent.DatabaseHelper;

public class MainActivity extends Activity{
    private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = (Button)findViewById(R.id.btn);    
        btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View arg0) {
                DatabaseHelper helper = new DatabaseHelper(MainActivity.this, "weizu", null, 1);
                //Create and/or open a database.
                SQLiteDatabase db = helper.getReadableDatabase();
            }
        });
    }
}

运行就是一个按钮,当我们点击了按钮后,按照逻辑应该创建一个表weizu。接着就看看表的位置:
使用adb工具,我这里没有配置到环境变量,故而直接在我安装的路径的SDK的文件夹中的tools中找到adb.exe。按住Shift键,然后右键,在当前文件夹中打开cmd命令窗口:
输入adb shell,进入安卓的文件系统,如图:

然后,切换目录到运行的应用目录,我这里是data/data/com.weizu.intent,就可以看见databases文件夹,我们进入,就可以看见创建的数据库weizu

不妨输入命令sqlite3 weizu,进入,然后可以看见表weizu:

这个博客写得很全面:地址
当然,要操作数据库,需要先了解SQLiteDatabaseSQLiteDatabase has methods to create, delete, execute SQL commands, and perform other common database management tasks.

方式二:Context.openOrCreateDatabase

先找文档,看看这个函数的说明:

abstract SQLiteDatabase!    
openOrCreateDatabase(name: String!, mode: Int, factory: SQLiteDatabase.CursorFactory!)

Open a new private SQLiteDatabase associated with this Context's application package.

name: The name (unique in the application package) of the database.
mode: Operating mode. Value is either 0 or a combination of android.content.Context#MODE_PRIVATE, android.content.Context#MODE_WORLD_READABLE, android.content.Context#MODE_WORLD_WRITEABLE, android.content.Context#MODE_ENABLE_WRITE_AHEAD_LOGGING, and android.content.Context#MODE_NO_LOCALIZED_COLLATORS
factory: An optional factory class that is called to instantiate a cursor when query is called.

这里就是简单的改一下上面的按钮监听事件如下:

btn.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View arg0) {
        SQLiteDatabase db = MainActivity.this.openOrCreateDatabase("intent.db", MODE_WORLD_WRITEABLE, null);
    }
});

我这里还是按照上面的方法,查看一下,如下图:


   Reprint policy


《android | SQLite初使用》 by 无涯明月 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
android | SQLite数据库操作 android | SQLite数据库操作
得到了数据库的对象,接着就是对数据库进行操作。增删改查。我们就需要查看SQLiteDatabase 数据库操作的一些方法下面就是我从文档中摘取的一些方法: 返回值方法说明 voidexecSQL(String sql)Execute
2019-08-18
Next 
android | ListView的点击事件 android | ListView的点击事件
看了ListView的简单生成,在实际中点击是很常见的,这里就介绍ListView的点击事件 还是上一个案例,我们在里面添加代码:首先,为item.java的对象添加toString方法,因为后面我们需要用到该类的toString方法,
2019-08-14
  TOC