Android Studio SQLlite学习

  • 一、了解SQLite
  • 二、单独安装(两种方法)
  • 三、新建/查看/删除表
  • 四、增删查改操作
  • 五、Android Studio内置SQLite


一、了解SQLite

SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
SQLite并没有包含大型客户/服务器数据库(如Oracle、SQL Server)的所有特性,但它包含了操作本地数据的所有功能,简单易用、反应快。SQLite内部只支持 NULL、INTEGER、REAL(浮点数)、TEXT(字符串文本)和BLOB(二进制对象)这五种数据类型,但实际上SQLite也接受varchar(n)、char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转成上面对应的数据类型。
Android内置SQLite,不需要安装和配置即可使用

二、单独安装(两种方法)

1、方法一:永久创建数据库,附加数据库和分离数据库
(1)下载并解压文件

下载地址

如何在android studio中打开sqlite android studio sqllite_android

如何在android studio中打开sqlite android studio sqllite_android_02

(2)新建文件夹将解压后的文件放在同一个文件夹中/SQLite

如何在android studio中打开sqlite android studio sqllite_SQL_03


(3)进入/SQLite目录下,输入sqlite3

如何在android studio中打开sqlite android studio sqllite_android_04


2、方法二:不需要设置路径,但数据是暂时的,关闭电脑将失去操作过的所有数据记录。这种方法不能创建、附加或分离数据

下载SQlite预编译的二进制zip文件:sqlite-tools-win32-x86-3170000.zip。解压到目录:/sqlite。直接双击运行sqlite3.exe应用程序。

三、新建/查看/删除表

1、新建和查看(句尾要用;)

如何在android studio中打开sqlite android studio sqllite_学习_05


2、删除和查看

如何在android studio中打开sqlite android studio sqllite_SQL_06

四、增删查改操作

1、建表

如何在android studio中打开sqlite android studio sqllite_sqlite_07


2、insert into

(1)写法一

如何在android studio中打开sqlite android studio sqllite_学习_08


(2)写法二

如何在android studio中打开sqlite android studio sqllite_SQL_09


3、select from(1)写法一

如何在android studio中打开sqlite android studio sqllite_学习_10


(2)写法二

如何在android studio中打开sqlite android studio sqllite_SQL_11

3、update where

如何在android studio中打开sqlite android studio sqllite_sqlite_12


4、delete from

如何在android studio中打开sqlite android studio sqllite_SQL_13

五、Android Studio内置SQLite

1、Android Studio内置SQLite,不用重新下载。直接在包的目录下使用,在命令行输入sqlite3。

如何在android studio中打开sqlite android studio sqllite_android studio_14


2、xml和java文件

2.1、xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="创建数据库"
        android:onClick="testCreateTB"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="新增记录"
        android:onClick="testInsert"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="更新记录"
        android:onClick="testUpdate"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除记录"
        android:onClick="testDelete"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询记录"
        android:onClick="testQuery"/>
</LinearLayout>

页面:

如何在android studio中打开sqlite android studio sqllite_sqlite_15

2.2、java(Activity):
(1)DB_Helper

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
    //第一次创建数据库的时候回调该方法
    //当使用getReadableDatabase()方法获取数据库实例的时候, 如果数据库不存在, 就会调用这个方法;
    //作用:创建数据库表:将创建数据库表的 execSQL()方法 和 初始化表数据的一些 insert()方法写在里面;
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //SQLite数据创建支持的数据类型: 整型数据,字符串类型,日期类型,二进制的数据类型
        //创建了一个名为person的表
        String sql = "CREATE table employee(" +
                "_id integer primary key autoincrement," +
                "name varchar)";
        db.execSQL(sql);
        //数据库实际上是没有被创建或者打开的,直到testCreateTB()方法中的一个被调用时才会进行创建或者打开

        System.out.println("数据库初始化成功");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

(2)SQLiteActivity

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class SQLiteActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite);
    }

    // 创建DatabaseHelper对象
    // 只执行这句话是不会创建或打开连接的
    // 调用getReadableDatabase()或getWritableDatabase()才算真正创建或打开数据库

    public void testCreateTB(View view){
        new DBHelper(SQLiteActivity.this,"mydb2022",null,1).getReadableDatabase();
    }

    public void testInsert(View view){
        DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
        SQLiteDatabase database = dbHelper.getReadableDatabase();
        ContentValues values = new ContentValues();
        values.put("name","jim");
        Long id = database.insert("employee",null,values);
        if(id>0)
            Toast.makeText(SQLiteActivity.this,"新增成功",Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(SQLiteActivity.this,"新增失败",Toast.LENGTH_SHORT).show();
    }

    public void testUpdate(View view){
        DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
        SQLiteDatabase database = dbHelper.getReadableDatabase();
        ContentValues values = new ContentValues();
        values.put("name","rose");
        int rows = database.update("employee",values,"_id = ?",new String[]{"3"});
        if(rows>0)
            Toast.makeText(SQLiteActivity.this,"修改成功",Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(SQLiteActivity.this,"修改失败",Toast.LENGTH_SHORT).show();
    }

    public void testDelete(View view){
        DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
        SQLiteDatabase database = dbHelper.getReadableDatabase();
        int rows = database.delete("employee","_id = ?",new String[]{"2"});
        if(rows>0)
            Toast.makeText(SQLiteActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(SQLiteActivity.this,"删除失败",Toast.LENGTH_SHORT).show();
    }

    public void testQuery(View view){
        DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
        SQLiteDatabase database = dbHelper.getReadableDatabase();
        Cursor cursor = database.query("employee",null,null,null,null,null,null,null);
        while(cursor.moveToNext()){
            int _id = cursor.getInt(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            Toast.makeText(SQLiteActivity.this,"id:"+_id+",name:"+name,Toast.LENGTH_SHORT).show();
        }
    }
}

2.3、测试运行