数据库
首页 > 数据库> > 安卓 专高 day09 Sqltie数据库

安卓 专高 day09 Sqltie数据库

作者:互联网

安卓 专高 day09 Sqltie数据库

Sqltie数据库

Sqltie数据库简介

Android 系统中集成的轻量级的数据库
特点

轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中

存放的类型

NULL 空值
INTEGER 整型(不用int)
VARCHAR 可变长度的字符数据
TEXT 文本字符串
BOOLEAN 布尔
DATE

SQL语句

1.创建表:
create table student(_id integer primary key autoincrement,name varchar(30),age integer,address varchar(30));

2.添加数据:
insert into student values(null,‘冯’,17,‘北京市海淀区’);

3.修改数据:
update student set age=18,address=‘河北省北京市’ where name=‘sgf’

4 查询数据:
select * from student where 字段 = ‘值’
模糊查询: select * from 表名 where name like ‘%小%’
select * from student order by age desc 降序查询
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 求平均值
count(列名) 统计记录数

5.删除数据:
delete from student where id=1

使用方式

定义一个类, 继承SQLiteOpenHelper
重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号
重写父类的两个方法:
onCreate(): onUpgrade()

自己new的MySQL类

package com.example.day09exe;

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

public class Mysql extends SQLiteOpenHelper {

    public Mysql(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    //onCreate方法只会执行一次
    //如果想要修改表的字段,要删除之前生成的数据库
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

用于数据库操作

package com.example.day09exe;

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

public class UserDao {
    private SQLiteDatabase db;
    //通过构造创建一个db;
    public UserDao(Context context) {
        Mysql mysql = new Mysql(context,"user.db",null,1);
        //可读可写.磁盘满了在尝试打开.(推荐使用)
        db = mysql.getReadableDatabase();
    }
}

操作值

执行sql语句

void execSQL(String sql,String[] bindArgs); 执行增删改
Cusor rawQuery(String sql,String[] selectionArgs); 执行查询

执行方法 – 封装好的方法

insert() 插入数据
update() 修改数据
delete() 删除数据
query() 查询数据

在UserDao中添加一个插入方法

//插入方法
    public void insert(User user){
        //方法1,占位符的形式
        String sql = "insert into user(name,age,address) values(?,?,?)";
//        db.execSQL(sql,new Object[]{user.getName(),user.getAge(),user.getAddress()});
        //方法2,系统的insert方法
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",user.getName());
        contentValues.put("age",user.getAge());
        contentValues.put("address",user.getAddress());
        db.insert("user",null,contentValues);
    }

在UserDao中添加一个update()方法

//修改方法 参数不在是user,而是要跟新的字段和字段值
    public void update(String age , int id){
        //方法1
        String sql = "update user set age = ? where _id=?";
//        db.execSQL(sql,new Object[]{user.getAge(),user.get_id()});
        //方式2
        ContentValues contentValues = new ContentValues();
        contentValues.put("age",age);
        db.update("user",contentValues,"_id = ?",new String[]{id+""});
    }

在UserDao中添加一个delete()方法

 //删除数据
    public int delete(String id) {
        //方式一:
        String sql="delete from user where _id = ? ";
//        db.execSQL(sql,new String[]{id});
        //方式二:
        int num = db.delete("user", "_id=?", new String[]{id});
        return num;
    }

在UserDao中添加一个query()方法

//查询一组数据
    public List<User> query() {
        ArrayList<User> users = new ArrayList<>();
        Cursor user = db.query("user", null, null, null, null, null, null);
        while(user.moveToNext()){
            //1,cursor.getColumnIndex("Name")  通过列名  获取所在列的编号
            //2,cursor.getString(列的编号);    通过列的编号, 得到该列的数据
            //不管id用不用,都要查,并且固定格式是 最好的格式 _id (有一个适配器强制的要求)
            String id = user.getString(user.getColumnIndex("_id"));
            String address = user.getString(user.getColumnIndex("address"));
            String name = user.getString(user.getColumnIndex("name"));
            String age = user.getString(user.getColumnIndex("age"));
            User user1 = new User(Integer.parseInt(id), name, Integer.parseInt(age), address);
            users.add(user1);
        }
        return users;
    }

activity中的java代码

package com.example.day09exe;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button insertId;
    private Button selectId;
    private Button updateId;
    private Button delId;
    private UserDao userDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        insertId = findViewById(R.id.insert_id);
        selectId = findViewById(R.id.select_id);
        updateId = findViewById(R.id.update_id);
        delId = findViewById(R.id.del_id);


        insertId.setOnClickListener(this);
        selectId.setOnClickListener(this);
        updateId.setOnClickListener(this);
        delId.setOnClickListener(this);

        userDao = new UserDao(this);

    }

    @Override
    public void onClick(View v) {

        int id = v.getId();
        switch (id) {
            case R.id.insert_id:
                User user = new User();
                user.setAge(17);
                user.setName("黑子");
                user.setAddress("狗窝");
                userDao.insert(user);
                break;

            case R.id.update_id:
                userDao.update("20",1);
                break;

            case R.id.del_id:
                int delete = userDao.delete("2");
                Toast.makeText(this, delete+"", Toast.LENGTH_SHORT).show();
                break;
            case R.id.select_id:
                List<User> query = userDao.query();
                Toast.makeText(this, query.get(0).getName(), Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

activity的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/insert_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入一个数据"/>

    <Button
        android:id="@+id/select_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询一个数据"/>

    <Button
        android:id="@+id/update_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="更新"/>

    <Button
        android:id="@+id/del_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"/>

</LinearLayout>
zxsenqiu 发布了9 篇原创文章 · 获赞 1 · 访问量 1251 私信 关注

标签:专高,String,安卓,db,public,Sqltie,user,new,id
来源: https://blog.csdn.net/zxsenqiu/article/details/104613090