安卓开发重点:数据库使用(学生信息库的增删改查)

安卓开发的基础学习中,有一个名为数据处理的重难点。

也就是如何实现增删改查。

现在咱们以学生信息库为例,看看如何实现学生信息的查找,删除,添加和修改。

XML:

activity_main

首先制作初始页面,也就是上图的四个图片按钮,文件名为activity_main

<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/b1"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:text="添加数据"
        android:textSize="30dp"/>
    <Button
        android:id="@+id/b2"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:text="删除数据"
        android:textSize="30dp"/>
    <Button
        android:id="@+id/b3"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:text="修改数据"
        android:textSize="30dp"/>
    <Button
        android:id="@+id/b4"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:text="查找数据"
        android:textSize="30dp"/>
</LinearLayout>

然后为各个页面的代码,这里的文件名直接使用中文拼音,也就是查找,删除,更新(修改),添加四个页面。

chazhao

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

    <TextView
        android:layout_width="10dp"
        android:layout_height="50dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:background="#EFEFD7"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:textSize="25sp"
            android:text="   姓名:" />
        <EditText
            android:id="@+id/name_c"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的姓名" />

    </LinearLayout>
    <Button
        android:id="@+id/bc"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查找"/>
    <Button
        android:id="@+id/bcc"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回"/>
    <TextView
        android:id="@+id/textc"
        android:onClick="ChickManager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="30dp"/>

</LinearLayout>
shanchu

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

    <TextView
        android:layout_width="10dp"
        android:layout_height="50dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:background="#EFEFD7"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:textSize="25sp"
            android:text="   姓名:" />
        <EditText
            android:id="@+id/name_s"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的姓名" />

    </LinearLayout>
    <Button
        android:id="@+id/bs"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除"/>
    <Button
        android:id="@+id/bss"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回"/>
    <TextView
        android:id="@+id/texts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="30dp"/>

</LinearLayout>

genxin

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

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

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:textSize="25sp"
            android:text="姓名:" />
        <EditText
            android:id="@+id/name_g"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的姓名" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="学号:"
            android:textSize="25sp"/>
        <EditText
            android:id="@+id/id_g"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的学号:"/>

    </LinearLayout>
    <RadioGroup
        android:id="@+id/sex"
        android:onClick="ChickManager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="性别:"
            android:textSize="25sp"/>
        <RadioButton
            android:id="@+id/mang"
            android:onClick="ChickManager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textSize="25dp"/>
        <RadioButton
            android:id="@+id/womang"
            android:onClick="ChickManager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="25dp"/>

    </RadioGroup>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="分数:"
            android:textSize="25sp"/>
        <EditText
            android:id="@+id/scores_g"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的分数:"/>

    </LinearLayout>
    <Button
        android:id="@+id/bg"
        android:onClick="ChickManager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="更新"/>
    <Button
        android:id="@+id/bgg"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回"/>
    <TextView
        android:id="@+id/textt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="30dp"/>

</LinearLayout>
tianjia

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

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

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:textSize="25sp"
            android:text="姓名:" />
        <EditText
            android:id="@+id/name_t"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的姓名" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="学号:"
            android:textSize="25sp"/>
        <EditText
            android:id="@+id/id_t"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的学号:"/>

    </LinearLayout>
    <RadioGroup
        android:id="@+id/sexxx"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="性别:"
            android:textSize="25sp"/>
        <RadioButton
            android:id="@+id/mant"
            android:onClick="ChickManager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textSize="25dp"/>
        <RadioButton
            android:id="@+id/womant"
            android:onClick="ChickManager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="25dp"/>

    </RadioGroup>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="分数:"
            android:textSize="25sp"/>
        <EditText
            android:id="@+id/scores_t"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的分数:"/>

    </LinearLayout>
    <Button
        android:id="@+id/bt"
        android:onClick="ChickManager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="添加"/>
    <Button
        android:id="@+id/btt"
        android:onClick="ChickManager"
        android:textSize="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回"/>
    <TextView
        android:id="@+id/textt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="30dp"/>

</LinearLayout>

接下来是Java代码:

MainActivity:
package com.example.a10;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Intent intent = new Intent();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View b1 = findViewById(R.id.b1);
        View b2 = findViewById(R.id.b2);
        View b3 = findViewById(R.id.b3);
        View b4 = findViewById(R.id.b4);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,tianjia.class);
                startActivity(intent);
            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,shanchu.class);
                startActivity(intent);
            }
        });
        b4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,chazhao.class);
                startActivity(intent);
            }
        });
        b3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,genxin.class);
                startActivity(intent);
            }
        });
    }
}
对AndroidManifes.xml操作

首先我们需要在AndroidManifest页面添加代码,来实现跳转,也就是插入xml页面的代码名。但这个其实算是xml类的。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme._10"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".chazhao"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".shanchu"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".genxin"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".tianjia"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

各个页面的Java代码:

chazhao:
package com.example.a10;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class chazhao extends AppCompatActivity {

    Intent intent=new Intent();
    private DBHelper mHelper;
    private EditText name;
    private TextView date;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chazhao);
        name=findViewById(R.id.name_c);
        date=findViewById(R.id.textc);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mHelper= DBHelper.getInstance(this,2);
        mHelper.openWriteLink();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mHelper.closeLink();
    }

    public void ChickManager(View v) {
        if(v.getId()==R.id.bc){
            String NAME =name.getText().toString();
            ArrayList arrayList=mHelper.query(NAME);
            if(arrayList.size()>0){
                String a=String.format("姓名为:%s,学号为:%s,性别为:%s,分数为:%s。",arrayList.get(0),arrayList.get(1),arrayList.get(2),arrayList.get(3));
                date.setText(a);
            }else  {
                Toast.makeText(this,"不存在",Toast.LENGTH_SHORT).show();
                date.setText("");
            }
        }
        if (v.getId()==R.id.bcc) {
            intent.setClass(this, MainActivity.class);
            startActivity(intent);
        }

    }
}
genxin:
package com.example.a10;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class chazhao extends AppCompatActivity {

    Intent intent=new Intent();
    private DBHelper mHelper;
    private EditText name;
    private TextView date;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chazhao);
        name=findViewById(R.id.name_c);
        date=findViewById(R.id.textc);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mHelper= DBHelper.getInstance(this,2);
        mHelper.openWriteLink();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mHelper.closeLink();
    }

    public void ChickManager(View v) {
        if(v.getId()==R.id.bc){
            String NAME =name.getText().toString();
            ArrayList arrayList=mHelper.query(NAME);
            if(arrayList.size()>0){
                String a=String.format("姓名为:%s,学号为:%s,性别为:%s,分数为:%s。",arrayList.get(0),arrayList.get(1),arrayList.get(2),arrayList.get(3));
                date.setText(a);
            }else  {
                Toast.makeText(this,"不存在",Toast.LENGTH_SHORT).show();
                date.setText("");
            }
        }
        if (v.getId()==R.id.bcc) {
            intent.setClass(this, MainActivity.class);
            startActivity(intent);
        }

    }
}
shanchu:
package com.example.a10;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class shanchu extends AppCompatActivity {

    private DBHelper mHelper;
    Intent intent=new Intent();
    private EditText name,sno;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shanchu);
        name=findViewById(R.id.name_s);
    }
    @Override
    protected void onResume() {
        super.onResume();
        mHelper= DBHelper.getInstance(this,2);
        mHelper.openWriteLink();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mHelper.closeLink();
    }


    public void ChickManager(View v) {
        String NAME=name.getText().toString();
        if(v.getId()==R.id.bs){
            int a= mHelper.delete(NAME);
            if(a>0)
            Toast.makeText(this,NAME+"删除成功",Toast.LENGTH_SHORT).show();
            else Toast.makeText(this,NAME+"不未找到",Toast.LENGTH_SHORT).show();
        }
        if (v.getId()==R.id.bss) {
            intent.setClass(this, MainActivity.class);
            startActivity(intent);
        }
    }
}
tianjia:
package com.example.a10;

import androidx.appcompat.app.AppCompatActivity;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class tianjia extends AppCompatActivity {
    private RadioGroup sex;
    private RadioButton sex_1,sex_2;
    private String NAME,SNO,SEX=null;
    private DBHelper mHelper;

    private EditText name,sno,grade;

    private int GRADE=-1;
    Intent intent=new Intent();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tianjian);
        name=findViewById(R.id.name_t);
        sno=findViewById(R.id.id_t);
        grade=findViewById(R.id.scores_t);
        sex=findViewById(R.id.sexxx);
        sex_1=findViewById(R.id.mant);
        sex_2=findViewById(R.id.womant);
        sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            int male= sex_1.getId();
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId==male){
                    SEX="男";
                }else{
                    SEX="女";
                }
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        mHelper= DBHelper.getInstance(this,2);
        mHelper.openWriteLink();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mHelper.closeLink();
    }

    public void ChickManager(View v) {
        if(v.getId()==R.id.bt){
            NAME=name.getText().toString();
            SNO=sno.getText().toString();
            try {
                GRADE = Integer.parseInt(grade.getText().toString());
                // 使用number变量
            } catch (NumberFormatException e){}

                // 处理转换错误,例如提示用户输入正确的格式

            if(NAME==null||SNO==null||SEX==null||GRADE<0){
                Toast.makeText(tianjia.this,"有值为空",Toast.LENGTH_SHORT).show();
            }else
            {
                if(mHelper.insert(NAME,SNO,SEX,GRADE)>0)
                Toast.makeText(tianjia.this,"重复了",Toast.LENGTH_SHORT).show();
                else Toast.makeText(tianjia.this,"存储成功",Toast.LENGTH_SHORT).show();
            }
        }
        if (v.getId()==R.id.btt) {
            intent.setClass(this, MainActivity.class);
            startActivity(intent);
        }
    }
}
最重要的是数据库代码,名为DBHelper:
package com.example.a10;

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

import java.util.ArrayList;

public class DBHelper extends SQLiteOpenHelper {

    private static final String DB_NAME="user.db";
    private static final int DB_VERSION=1;
    private static DBHelper mHelper=null;
    private SQLiteDatabase mDB=null;
    public static final String TABLE_NAME="student";
    private DBHelper(Context context) {
        super(context,DB_NAME,null,DB_VERSION);
    }

    private DBHelper(Context context, int version) {
        super(context,DB_NAME,null,version);
    }

    //单例模式获取数据库帮助器的唯一实例
    public static DBHelper getInstance(Context context, int version){
        if (version>0&&mHelper==null){
            mHelper=new DBHelper(context, version);
        } else if (mHelper==null) {
            mHelper=new DBHelper(context);
        }
        return mHelper;
    }


    //打开数据库读连接
    public SQLiteDatabase openReadLink(){
        if(mDB==null||!mDB.isOpen()){
            mDB=mHelper.getReadableDatabase();
        }
        return  mDB;
    }

    //打开数据库写连接
    public SQLiteDatabase openWriteLink(){
        if(mDB==null||!mDB.isOpen()){
            mDB=mHelper.getWritableDatabase();
        }
        return  mDB;
    }

    //关闭数据库连接
    public void closeLink(){
        if (mDB!=null&&mDB.isOpen()){
            mDB.close();
            mDB=null;
        }
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String create_sql="CREATE TABLE IF NOT EXISTS "+TABLE_NAME+"(NAME CHAR(20) PRIMARY KEY NOT NULL," +
                "SNO CHAR(6) NOT NULL,SEX CHAR(2),GRAGE INT);";
        db.execSQL(create_sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
    public int delete(String condition){
        condition="NAME='"+condition+"'";
        return mDB.delete(TABLE_NAME, condition,null);
    }

    public long insert(String name,String sno,String sex,int grade){
        long result =-1;
        ArrayList arrayList =query(name);
        if(arrayList.size()>0){
            result=arrayList.size();
            return result;
        }
        String insertdb="INSERT INTO "+TABLE_NAME+" (NAME,SNO,SEX,GRAGE) VALUES ('"+name+"','"+sno+"','"+sex+"','"+
                +grade+"')";
        mDB.execSQL(insertdb);
        return result;
    }

    public int update(String name,String sno,String sex,int grade){
        if(query(name).size()<=0)
            return 0;
        ContentValues cv =new ContentValues();
        cv.put("NAME",name);
        cv.put("SNO",sno);
        cv.put("SEX",sex);
        cv.put("GRAGE",grade);
        name="NAME='"+name+"'";
        return mDB.update(TABLE_NAME,cv,name,null);
    }

    public ArrayList query(String condition){
        String sql= String.format("SELECT * FROM %s WHERE NAME='%s';",TABLE_NAME,condition);
        Cursor cursor=mDB.rawQuery(sql,null);
        ArrayList infoarray=new ArrayList();
        while (cursor.moveToNext()){
            infoarray.add(cursor.getString(0));
            infoarray.add(cursor.getString(1));
            infoarray.add(cursor.getString(2));
            infoarray.add(cursor.getInt(3));
        }
        cursor.close();
        return infoarray;
    }


}

检查运行即可,下面是总文件布局

原创不易,点个赞吧

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值