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

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

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

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


一、实验目的:

  1. 掌握Android高级控件的使用方法及其事件处理方法;
  2. 熟悉Android数据存储方案,掌握SQLite的使用方法。

二、实验内容:

  1. 新建一个Android应用程序,设计一个能够输入用户姓名、密码、电话、邮箱和性别等信息的界面;
  2. 为界面添加“添加”、“保存”、“删除”和“清空”等按钮和用户名下拉列表;
  3. 实现对SQLite数据库的创建、连接、查询和增删改等操作;
  4. 实现数据库的原始数据初始化功能;
  5. 编写“添加”按钮响应代码,实现记录添加功能;
  6. 编写下拉列表响应代码,启动应用程序时,下拉列表中自动从数据库中载入所有用户名,并将第一条记录信息显示于界面中。当用户选择不同用户名时,界面显示相应用户信息。
  7. 编写“保存”、“删除”、“清空”按钮响应代码。分别完成修改并保存当前记录;删除当前记录、清空界面功能。

三、实验指导:

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

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

  • 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控件可用于多选一的应用中。如果想在选中某一个选项按钮后,其他的选项按钮都被设为未选中状态,则需要将标签放在标签中。
  • 为使下拉列表(用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数据库的使用_第2张图片

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 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 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数据库的使用_第3张图片

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

六、结语:

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

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

你可能感兴趣的:(移动终端)