Android Studio SQLlite学习

一、了解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)下载并解压文件

下载地址
在这里插入图片描述

在这里插入图片描述

(2)新建文件夹将解压后的文件放在同一个文件夹中/SQLite
在这里插入图片描述
(3)进入/SQLite目录下,输入sqlite3
在这里插入图片描述
2、方法二:不需要设置路径,但数据是暂时的,关闭电脑将失去操作过的所有数据记录。这种方法不能创建、附加或分离数据
下载SQlite预编译的二进制zip文件:sqlite-tools-win32-x86-3170000.zip。解压到目录:/sqlite。直接双击运行sqlite3.exe应用程序。

三、新建/查看/删除表

1、新建和查看(句尾要用;)
在这里插入图片描述
2、删除和查看
在这里插入图片描述

四、增删查改操作

1、建表在这里插入图片描述
2、insert into
(1)写法一
在这里插入图片描述
(2)写法二
在这里插入图片描述
3、select from

(1)写法一
在这里插入图片描述
(2)写法二
在这里插入图片描述

3、update where在这里插入图片描述
4、delete from
在这里插入图片描述

扫描二维码关注公众号,回复: 17280975 查看本文章
五、Android Studio内置SQLite

1、Android Studio内置SQLite,不用重新下载。直接在包的目录下使用,在命令行输入sqlite3。
在这里插入图片描述
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>

页面:
在这里插入图片描述

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、测试运行

猜你喜欢

转载自blog.csdn.net/ariarko/article/details/125415705