安卓开发的基础学习中,有一个名为数据处理的重难点。
也就是如何实现增删改查。
现在咱们以学生信息库为例,看看如何实现学生信息的查找,删除,添加和修改。
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;
}
}
检查运行即可,下面是总文件布局
原创不易,点个赞吧
标签:安卓,改查,public,信息库,mHelper,import,android,intent,void From: https://blog.csdn.net/tomcatqqq/article/details/140938212