039 Android SQLite数据库(了解)

1.介绍

注意:当有大量相似结构的数据需要存储的时候,需要使用数据库。

2.SQLiteOpenHelper简介

注意:数据库的创建方法总结:

(1)定义一个类继承SQLiteOpenHelper

onCreate()方法:当数据库第一次创建时调用,特别适合做表结构的初始化。

onUpdate()方法:当数据库版本进行更新时调用。

3.简单SQL语句

4.xml文件页面布局

<?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"
    android:orientation="vertical"
    tools:context=".MainActivity"
    >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="编号:" />

        <EditText
            android:id="@+id/editText_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:" />

        <EditText
            android:id="@+id/editText_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年龄:" />

        <EditText
            android:id="@+id/editText_age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp">

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="请输入你要查找的编号:" />

        <EditText
            android:id="@+id/editText_qurryid"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="" />

        <Button
            android:id="@+id/button_qurryById"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查找" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp">


        <Button
            android:id="@+id/button_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="添加"
            android:layout_marginRight="10dp"/>

        <Button
            android:id="@+id/button_delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除"
            android:layout_marginRight="10dp"/>
        <Button
            android:id="@+id/button_modify"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="修改" />
    </LinearLayout>

    <TextView
        android:id="@+id/textView5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />
</LinearLayout>

5.java后台

主界面

package com.lucky.test48sqlite;

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.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
        Button button_queryByid;
        Button button_add;
        Button button_delete;
        Button button_modify;
        EditText editText_id;
        EditText editText_name;
        EditText editText_age;
        EditText editText_inputid;
        TextView textView_findresult;
        SQLiteDatabase sqLiteDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        
        MyDataBase myDataBase=new MyDataBase(MainActivity.this); //实例化数据库
        sqLiteDatabase=myDataBase.getWritableDatabase();       //创建数据库

        //绑定按钮点击事件
        button_queryByid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //根据id进行查询
                textView_findresult.setText("");
                String sql="select *from user where 编号=?";
                Cursor cursor=sqLiteDatabase.rawQuery(sql,new String[]{editText_inputid.getText().toString()});
                //判断游标是否可以移到下一行,若可以,则有数据
                while (cursor.moveToNext()){
                    String name=cursor.getString(cursor.getColumnIndex("姓名"));
                    int id=cursor.getInt(cursor.getColumnIndex("编号"));
                    textView_findresult.append("
编号:"+id+"	姓名:"+name);
                }
            }
        });

        button_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //向数据库中添加数据
                String sql="insert into user(编号,姓名,年龄) values(?,?,?)";
                sqLiteDatabase.execSQL(sql,new Object[]{Integer.parseInt(editText_id.getText().toString()),
                editText_name.getText().toString(),
                Integer.parseInt(editText_age.getText().toString())});
            }
        });

        button_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //删除数据库中的数据
                String sql="delete from user where 编号=?";
                sqLiteDatabase.execSQL(sql,new Object[]{Integer.parseInt(editText_id.getText().toString())});
            }
        });

        button_modify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //修改数据库内容
                String sql="update user set 编号=?,姓名=?,年龄=?";
                sqLiteDatabase.execSQL(sql,new Object[]{Integer.parseInt(editText_id.getText().toString()),
                        editText_name.getText().toString(),
                        Integer.parseInt(editText_age.getText().toString())});
            }
        });


    }

    private void init() {
        button_add=findViewById(R.id.button_add);
        button_delete=findViewById(R.id.button_delete);
        button_modify=findViewById(R.id.button_modify);
        button_queryByid=findViewById(R.id.button_qurryById);
        editText_age=findViewById(R.id.editText_age);
        editText_id=findViewById(R.id.editText_id);
        editText_name=findViewById(R.id.editText_name);
        editText_inputid=findViewById(R.id.editText_qurryid);
        textView_findresult=findViewById(R.id.textView5);
    }

}

Mydatabase工具类

package com.lucky.test48sqlite;

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

public class MyDataBase extends SQLiteOpenHelper {
    static int version=1;
    static String name="lucky.db";
    public MyDataBase( Context context) {
        //参数1:context为上下文,参数2:name为数据库名称,参数3可默认为null,参数4:为数据库版本
        super(context, name, null, version);
    }

    //当数据库第一次被创建的时候,调用该方法,适合进行数据库表的初始化,创建数据库(注意:数据库创建在安卓app文件包内)
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table user(编号 Integer,姓名 varchar(10),年龄 Integer)";
        db.execSQL(sql);
    }

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

    }
}
原文地址:https://www.cnblogs.com/luckyplj/p/10533611.html