mydatabase

发布时间 2023-06-18 03:53:45作者: 洛殊

1 布局文件 activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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"
        >
        <Button
            android:id="@+id/create"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="建立数据库"
            android:textSize="15sp"
            />
        <Button
            android:id="@+id/open"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打开数据库"
            android:textSize="15sp"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="浏览通讯录:"
            android:textSize="15sp"/>
        <Button
            android:id="@+id/up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一条记录"
            android:textSize="15sp"
            android:enabled="false"
            />
        <Button
            android:id="@+id/down"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一条记录"
            android:textSize="15sp"
            android:enabled="false"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户姓名:"
            android:textSize="15sp"
            />

        <EditText
            android:id="@+id/mtxt1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="联系电话:"
            android:textSize="15sp"
            />

        <EditText
            android:id="@+id/mtxt2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="家庭住址:"
            android:textSize="15sp"
            />

        <EditText
            android:id="@+id/mtxt3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电子邮箱:"
            android:textSize="15sp"
            />

        <EditText
            android:id="@+id/mtxt4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp"
        >
        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="添加"
            android:textSize="15sp"
            android:enabled="false"/>
        <Button
            android:id="@+id/update"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="修改"
            android:textSize="15sp"
            android:enabled="false"/>
        <Button
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除"
            android:textSize="15sp"
            android:enabled="false"/>
        <Button
            android:id="@+id/close"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="关闭数据库"
            android:textSize="15sp"
            android:enabled="false"/>
    </LinearLayout>

</LinearLayout>

2 控制文件 MainActivity

package com.example.mydatabase;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    static EditText mtxt1,mtxt2,mtxt3,mtxt4;
    Cursor cursor;
    Button create,open,up,down;
    Button add,update,delete,close;
    SQLiteDatabase db;
    DBConnection helper;

    public int id_this;

    Bundle savedInstanceState;

    //定义数据库名称和结构
    static String TABLE_NAME="Users";
    static String ID = "_id";
    static String USER_NAME = "user_name";
    static String ADDRESS ="address";
    static String TELEPHONE = "telephone";
    static String MALL_ADDRESS = "mail_address";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        helper=new DBConnection(MainActivity.this);


        mtxt1=findViewById(R.id.mtxt1);
        mtxt2=findViewById(R.id.mtxt2);
        mtxt3=findViewById(R.id.mtxt3);
        mtxt4=findViewById(R.id.mtxt4);

        create=findViewById(R.id.create);
        create.setOnClickListener(new mClick());

        open=findViewById(R.id.open);
        open.setOnClickListener(new mClick());

        up=findViewById(R.id.up);
        up.setOnClickListener(new mClick());

        down=findViewById(R.id.down);
        down.setOnClickListener(new mClick());

        add=findViewById(R.id.add);
        add.setOnClickListener(new mClick());

        update=findViewById(R.id.update);
        update.setOnClickListener(new mClick());

        delete=findViewById(R.id.delete);
        delete.setOnClickListener(new mClick());

        close=findViewById(R.id.close);
        close.setOnClickListener(new mClick());
    }

    private class mClick implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.create:
                    SQLiteDatabase db=helper.getWritableDatabase();                   //修改
                    break;
                case R.id.open:
                    db=openOrCreateDatabase("PhoneBook.db", Context.MODE_PRIVATE,null);
                    cursor=db.query("Users",null,null,null,null,null,null);
                    cursor.moveToNext();
                    datashow();
                    up.setEnabled(true);
                    down.setEnabled(true);
                    add.setEnabled(true);
                    update.setEnabled(true);
                    delete.setEnabled(true);
                    close.setEnabled(true);
                    break;

                case R.id.up:
                    if(!cursor.isFirst()){
                        cursor.moveToPrevious();
                        datashow();
                    }
                    break;

                case R.id.down:
                    if(!cursor.isLast()){
                        cursor.moveToNext();
                        datashow();
                    }
                    break;

                case R.id.add:
                    add();
                    //onCreate(savedInstanceState);
                    break;

                case R.id.update:
                    update();
                    //onCreate(savedInstanceState);
                    break;

                case R.id.delete:
                    delete();
                    //onCreate(savedInstanceState);
                    break;

                case R.id.close:
                    cursor.close();
                    mtxt1.setText("数据库已关闭");
                    mtxt2.setText("数据库已关闭");
                    mtxt3.setText("数据库已关闭");
                    mtxt4.setText("数据库已关闭");
                    add.setEnabled(false);
                    update.setEnabled(false);
                    delete.setEnabled(false);
                    up.setEnabled(false);
                    down.setEnabled(false);
                    close.setEnabled(false);
                    break;

            }
        }
    }

    void datashow(){
        id_this=Integer.parseInt(cursor.getString(0));
        String user_name_this=cursor.getString(1);
        String telephone_this=cursor.getString(2);
        String address_this=cursor.getString(3);
        String mail_address_this=cursor.getString(4);
        mtxt1.setText(user_name_this);
        mtxt2.setText(telephone_this);
        mtxt3.setText(address_this);
        mtxt4.setText(mail_address_this);
    }

    void add(){
        ContentValues values=new ContentValues();
        values.put(USER_NAME,MainActivity.mtxt1.getText().toString());
        values.put(TELEPHONE,MainActivity.mtxt2.getText().toString());
        values.put(ADDRESS,MainActivity.mtxt3.getText().toString());
        values.put(MALL_ADDRESS,MainActivity.mtxt4.getText().toString());

        SQLiteDatabase db2=helper.getWritableDatabase();
        db2.insert(TABLE_NAME,null,values);
        db2.close();
    }

    void update(){
        ContentValues values=new ContentValues();
        values.put(USER_NAME,MainActivity.mtxt1.getText().toString());
        values.put(TELEPHONE,MainActivity.mtxt2.getText().toString());
        values.put(ADDRESS,MainActivity.mtxt3.getText().toString());
        values.put(MALL_ADDRESS,MainActivity.mtxt4.getText().toString());

        String where = ID+"="+id_this;
        SQLiteDatabase db2=helper.getWritableDatabase();
        db2.update(TABLE_NAME,values,where,null);
        db2.close();
    }

    void delete(){
        String where =ID +"="+id_this;
        db=helper.getWritableDatabase();
        db.delete(TABLE_NAME,where,null);
        db.close();
    }

}

3 DBConnection.java

package com.example.mydatabase;

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

import java.sql.Connection;

public class DBConnection extends SQLiteOpenHelper {
    static final String Datebase_name="PhoneBook.db";
    static final int Datebase_version=1;
    SQLiteDatabase db;
    public int id_this;

    Cursor cursor;
    //定义数据库名称和结构
    static String TABLE_NAME="Users";
    static String ID = "_id";
    static String USER_NAME = "user_name";
    static String ADDRESS ="address";
    static String TELEPHONE = "telephone";
    static String MALL_ADDRESS = "mail_address";

    DBConnection(Context ctx){
        super(ctx,Datebase_name,null,Datebase_version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE "+TABLE_NAME+" ( "+ID+" Integer primary key autoincrement, "
                +USER_NAME+" text not null, " +TELEPHONE+" text not null, " +ADDRESS+" text not null, "
                +MALL_ADDRESS+" text not null "+");";
        db.execSQL(sql);
    }

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