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) {}
}