【移动终端应用开发】实验2:SQLite数据库的使用

文章正文
发布时间:2024-12-25 02:02

注:这是WHUT 计算机学院 移动终端应用开发课程、实验2:SQLite数据库的使用 的文章。

源码下载地址:https://download.csdn.net/download/cxh_1231/10805430

纸上得来终觉浅,绝知此事要躬行。

一、实验目的:

掌握Android高级控件的使用方法及其事件处理方法;

熟悉Android数据存储方案,掌握SQLite的使用方法。

二、实验内容:

新建一个Android应用程序,设计一个能够输入用户姓名、密码、电话、邮箱和性别等信息的界面;

为界面添加“添加”、“保存”、“删除”和“清空”等按钮和用户名下拉列表;

实现对SQLite数据库的创建、连接、查询和增删改等操作;

实现数据库的原始数据初始化功能;

编写“添加”按钮响应代码,实现记录添加功能;

编写下拉列表响应代码,启动应用程序时,下拉列表中自动从数据库中载入所有用户名,并将第一条记录信息显示于界面中。当用户选择不同用户名时,界面显示相应用户信息。

编写“保存”、“删除”、“清空”按钮响应代码。分别完成修改并保存当前记录;删除当前记录、清空界面功能。

三、实验指导:

新建一个Android应用程序,设计一个GUI界面,效果图如图所示。

【移动终端应用开发】实验2:SQLite数据库的使用_应用开发

SQLite数据库是Android系统内置的一款轻量级的关系型数据库。 SQLite数据库不仅支持标准的SQL语法,并且遵循了数据库的ACID事务。使用SQLiteDatabase操作SQLite数据库的基本方法如下。

(1) 创建数据库,基本步骤为:
 定义一个继承自SQLiteOpenHelper的类。
 在类中重写SQLiteOpenHelper类的onCreate()方法和onUpgrade()方法。
 创建类的实例,调用getReadableDatabase()或getWriteableDatabase()方法创建数据库。
例如:

public class BaseDBHelper extends SQLiteOpenHelper { private static final String CREATE_T_MEMO = “create table t_memo(” +“id integer primary key autoincrement,” +“memo_time text,” +“memo_content text)”; private Context context; public BaseDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_T_MEMO); //创建数据库表t_memo } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } ... BaseDBHelper dbHelper = new BaseDBHelper(MainActivity.this, "firstdemo_db", null, 1); SQLiteDatabase db = dbHelper.getWritableDatabase(); //创建数据库firstdemo_db ...

(2)使用SQLiteDataBse类的insert()方法向数据库中添加数据。例如:

ContentValues values = new ContentValues(); values.put("memo_time", time); values.put("memo_content", content); long f = db.insert("t_memo", null, values); //向表中插入数据

(3) 使用SQLiteDatabase类的query()方法对数据库表中的数据进行查询。例如:

Cursor cursor = db.query("t_memo", null, null, null, null, null, null); //从数据库表t_memo中读取所有数据

(4) 使用SQLiteDatabase类的update()方法对数据库表中的数据进行更新。例如:

ContentValues values = new ContentValues(); values.put("memo_time", tv_time.getText().toString()); values.put("memo_content", et_content.getText().toString()); int is_succeeed = db.update("t_memo", values, "id = ? ", new String[]{memo_id}); //修改指定编号的记录

(5) 使用SQLiteDatabase类的delete()方法对数据库表中的数据进行删除。例如:

int is_succeed = db.delete("t_memo", "id = ? ", new String[]{memo_id}); //从表t_memo中删除指定编号的记录

图2中的单选按钮采用RadioButton控件实现。RadioButton控件可用于多选一的应用中。如果想在选中某一个选项按钮后,其他的选项按钮都被设为未选中状态,则需要将<RadioButton>标签放在<RadioGroup>标签中。

为使下拉列表(用Spinner控件实现)能响应用户的选择,需要监听Spinner控件上的选项事件。关键代码如下:

spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id){ ... //事件处理代码 } @Override public void onNothingSelected(AdapterView<?> parent){ } }); 四、过程记录: 1、activity_main.xml布局:

【移动终端应用开发】实验2:SQLite数据库的使用_Android_02

2、DBHelper.java文件代码: package com.cxhit.test2; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { private static final String CREATE_T_USER = "create table t_user(" +"id integer primary key autoincrement," +"user_Name text," +"user_Password text," +"user_Tel text," +"user_Email text," +"user_Sex int)"; private Context context; public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_T_USER);//创建数据表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 3、MainActivity.java文件代码: package com.cxhit.test2; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.*; //调用 import android.widget.Toast; import android.widget.Spinner; import android.content.ContentValues; import java.util.ArrayList; import java.util.List; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { public static SQLiteDatabase database;//数据库对象 private List<User> userList; //用户列表 // private EditText getName,getPassword,getTel,getEmail; private int getSex; // private Button addButton,saveButton,deleteButton,emptyButton; private RadioGroup sexRadio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); database=getDatabase();//获得数据库对象 //四个按钮的对象 addButton=(Button) findViewById(R.id.buttonAdd); saveButton = (Button) findViewById(R.id.buttonSave); deleteButton = (Button) findViewById(R.id.buttonDelete); emptyButton = (Button) findViewById(R.id.buttonEmpty); //性别选项 sexRadio = (RadioGroup) findViewById(R.id.radioSex); Spinner spinner = (Spinner) findViewById(R.id.spinnerNowUser); final List<String> datas = new ArrayList<>(); datas.add("zhangsan"); datas.add("lisi"); datas.add("wangwu"); MyAdapter adapter = new MyAdapter(this); spinner.setAdapter(adapter); adapter.setDatas(datas); } //为“添加”按钮点击点击事件 public void buttonAdd_Click(View view){ getName = (EditText) findViewById(R.id.editTextUsername); getPassword = (EditText) findViewById(R.id.editTextPassword); getTel = (EditText) findViewById(R.id.editTextTel); getEmail = (EditText) findViewById(R.id.editTextEmail); getSex = sexRadio.getCheckedRadioButtonId(); if(TextUtils.isEmpty(getName.getText().toString())){ Toast.makeText(MainActivity.this,"请输入用户名!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getPassword.getText().toString())){ Toast.makeText(MainActivity.this,"请输入密码!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getTel.getText().toString())){ Toast.makeText(MainActivity.this,"请输入手机号!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getEmail.getText().toString())){ Toast.makeText(MainActivity.this,"请输入邮箱号码!",Toast.LENGTH_LONG).show(); } else if(getSex<0){ Toast.makeText(MainActivity.this,"请选择性别!",Toast.LENGTH_LONG).show(); }else{ //将数据保存到数据库 ContentValues values = new ContentValues(); values.put("user_Name",getName.getText().toString()); values.put("user_Password",getPassword.getText().toString()); values.put("user_Tel",getTel.getText().toString()); values.put("user_Email",getEmail.getText().toString()); values.put("user_Sex",getSex); long flag = database.insert("t_user", null, values); if (flag > 0) { Toast.makeText(MainActivity.this, "添加成功!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "添加失败!", Toast.LENGTH_LONG).show(); } } } public void buttonSave_Click(View view){ getName = (EditText) findViewById(R.id.editTextUsername); getPassword = (EditText) findViewById(R.id.editTextPassword); getTel = (EditText) findViewById(R.id.editTextTel); getEmail = (EditText) findViewById(R.id.editTextEmail); getSex = sexRadio.getCheckedRadioButtonId(); if(TextUtils.isEmpty(getName.getText().toString())){ Toast.makeText(MainActivity.this,"请输入用户名!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getPassword.getText().toString())){ Toast.makeText(MainActivity.this,"请输入密码!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getTel.getText().toString())){ Toast.makeText(MainActivity.this,"请输入手机号!",Toast.LENGTH_LONG).show(); } else if(TextUtils.isEmpty(getEmail.getText().toString())){ Toast.makeText(MainActivity.this,"请输入邮箱号码!",Toast.LENGTH_LONG).show(); } else if(getSex<0){ Toast.makeText(MainActivity.this,"请选择性别!",Toast.LENGTH_LONG).show(); }else{ //将数据保存到数据库 ContentValues values = new ContentValues(); values.put("user_Name",getName.getText().toString()); values.put("user_Password",getPassword.getText().toString()); values.put("user_Tel",getTel.getText().toString()); values.put("user_Email",getEmail.getText().toString()); values.put("user_Sex",getSex); int is_succeeed=database.update("t_user",values,"user_Name=?",new String[]{getName.getText().toString()}); if (is_succeeed > 0) {//如果要保存的用户在数据库中 Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_LONG).show(); } else {//如果不在数据库中,改为添加操作 long flag = database.insert("t_user", null, values); Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_LONG).show();} } } public void buttonDelete_Click(View view){ getName = (EditText) findViewById(R.id.editTextUsername); int is_succeed=database.delete("t_user","user_Name=?",new String[]{getName.getText().toString()}); if(is_succeed>0) Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_LONG).show(); } public void buttonEmpty_Click(View view){ getName = (EditText) findViewById(R.id.editTextUsername); getPassword = (EditText) findViewById(R.id.editTextPassword); getTel = (EditText) findViewById(R.id.editTextTel); getEmail = (EditText) findViewById(R.id.editTextEmail); getSex = sexRadio.getCheckedRadioButtonId(); getName.setText(""); getPassword.setText(""); getEmail.setText(""); getTel.setText(""); Toast.makeText(MainActivity.this,"清空成功",Toast.LENGTH_LONG).show(); } //获得数据库对象 private SQLiteDatabase getDatabase() { DBHelper dbHelper = new DBHelper(MainActivity.this, "demo_db", null, 1); return dbHelper.getReadableDatabase(); } } 五、运行截图:

【移动终端应用开发】实验2:SQLite数据库的使用_Android_03

【移动终端应用开发】实验2:SQLite数据库的使用_本科课程笔记_04

六、结语:

“添加”按钮、“保存”按钮功能基本shix实现,删除按钮未实现。仅供参考!!!

纸上得来终觉浅,绝知此事要躬行。