博客
关于我
Android实验篇3_SaveInDatabase之SQLite的基本操作
阅读量:360 次
发布时间:2019-03-04

本文共 5103 字,大约阅读时间需要 17 分钟。

Android SQLite 数据库应用开发实例

本文将展示如何使用SQLite数据库在Android应用中进行用户信息管理。我们将通过创建一个简单的应用程序,展示数据库的增删改查操作。

一、功能需求

  • 用户信息存储:需要存储用户的姓名和年龄信息。
  • 数据显示:在界面上显示存储的用户信息。
  • 数据操作
    • 添加用户信息:通过按钮点击存储姓名和年龄。
    • 清空数据库:提供一个按钮清空所有用户信息。
  • 二、项目结构

    项目主要包含以下文件:

    • activity_layout.xml:定义用户界面布局。
    • MainActivity.java:实现主活动类,负责用户交互和数据库操作。
    • User.java:定义一个User类,用于存储用户信息。
    • MyDBHelper.java:定义一个帮助类,用于管理SQLite数据库。

    三、数据库设计

    数据库名称为db,包含一个表user_info,字段如下:

    • _id(主键,自增)
    • name(姓名,字符串类型)
    • age(年龄,字符串类型)

    四、界面设计

    界面采用线性布局,包含四行:

  • 姓名输入:文本输入框和标签。
  • 年龄输入:文本输入框和标签。
  • 操作按钮:存入和清空数据库的按钮。
  • 数据显示区域:用于显示存储的用户信息。
  • 五、数据库操作

  • 添加数据

    • 使用ContentValues对象存储用户信息。
    • 执行插入操作,检查结果是否成功。
    • 更新界面显示最新数据。
  • 查询数据

    • 使用数据库查询获取所有用户信息。
    • 将查询结果添加到列表中,动态生成显示区域的文本视图。
  • 清空数据

    • 执行删除操作,移除所有用户信息。
    • 清空数据显示区域。
  • 六、代码实现

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText etName;    private EditText etAge;    private Button btnSave;    private Button btnClear;    private LinearLayout llShow;    private List
    users = new ArrayList<>(); private MyDBHelper myDBHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myDBHelper = new MyDBHelper(this, "db", null, 2); btnSave = findViewById(R.id.btn_save); btnClear = findViewById(R.id.btn_clear); llShow = findViewById(R.id.ll_show); btnSave.setOnClickListener(this); btnClear.setOnClickListener(this); loadUsers(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_save: etName = findViewById(R.id.et_name); etAge = findViewById(R.id.et_age); if (etName.getText().isEmpty() || etAge.getText().isEmpty()) { Toast.makeText(this, "请填写完整信息!", Toast.LENGTH_SHORT).show(); return; } insert(etName.getText().toString(), etAge.getText().toString()); break; case R.id.btn_clear: clearData(); break; } } private void insert(String name, String age) { SQLiteDatabase db = myDBHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); long result = db.insert("user_info", null, values); if (result != -1) { Toast.makeText(this, "用户信息已成功添加!", Toast.LENGTH_SHORT).show(); loadUsers(); } db.close(); } private void clearData() { SQLiteDatabase db = myDBHelper.getWritableDatabase(); db.delete("user_info", null, null); db.close(); Toast.makeText(this, "数据库已清空!", Toast.LENGTH_SHORT).show(); llShow.removeAllViewsInLayout(); } private void loadUsers() { SQLiteDatabase db = myDBHelper.getWritableDatabase(); Cursor cursor = db.query("user_info", null, null, null, null, null, null); users.clear(); while (cursor.moveToNext()) { String name = cursor.getString(1); String age = cursor.getString(2); users.add(new User(null, name, age)); } cursor.close(); db.close(); updateShowView(); } private void updateShowView() { llShow.removeAllViewsInLayout(); for (User user : users) { TextView tv = new TextView(this); tv.setText("ID: " + user.getId() + "\n姓名: " + user.getName() + "\n年龄: " + user.getAge()); tv.setTextSize(16); llShow.addView(tv); } }}

    七、User类定义

    public class User {    private String id;    private String name;    private String age;    public User(String id, String name, String age) {        this.id = id;        this.name = name;        this.age = age;    }    public String getId() {        return id;    }    public String getName() {        return name;    }    public String getAge() {        return age;    }    @Override    public String toString() {        return "User{ " + id + ", " + name + ", " + age + "}";    }}

    八、MyDBHelper类定义

    public class MyDBHelper extends SQLiteOpenHelper {    public MyDBHelper(Context context, String name, CursorFactory factory, int version) {        super(context, "db", null, 2);    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL("create table if not exists user_info (_id integer primary key autoincrement, name text, age text)");    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // 数据库升级逻辑        if (newVersion > oldVersion) {            db.execSQL("drop table if exists user_info");            db.execSQL("create table user_info (_id integer primary key autoincrement, name text, age text)");        }    }}

    九、活动布局文件

    十、主活动与数据库交互

  • 数据库初始化
    • 使用MyDBHelper创建数据库并检查表是否存在。
  • 数据查询
    • onCreate方法中自动加载用户数据。
  • 用户操作响应
    • 按钮点击触发相应的数据库操作。
  • 通过以上代码和设计,我们成功实现了一个简单的用户信息管理系统,能够进行数据的添加、查询和清空操作。整个开发过程注重代码的简洁性和可读性,确保了数据库操作的高效性和用户体验的良好。

    转载地址:http://nwmr.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现powLinear函数和powFaster函数算法 (附完整源码)
    查看>>
    Objective-C实现PrimeFactors质因子分解算法 (附完整源码)
    查看>>
    Objective-C实现pythagoras哥拉斯算法(附完整源码)
    查看>>
    Objective-C实现qubit measure量子位测量算法(附完整源码)
    查看>>
    Objective-C实现quick select快速选择算法(附完整源码)
    查看>>
    Objective-C实现radians弧度制算法(附完整源码)
    查看>>
    Objective-C实现radianToDegree弧度到度算法(附完整源码)
    查看>>
    Objective-C实现radix sort基数排序算法(附完整源码)
    查看>>
    Objective-C实现rail fence围栏密码算法(附完整源码)
    查看>>
    Objective-C实现rayleigh quotient瑞利商算法(附完整源码)
    查看>>
    Objective-C实现RC4加解密算法(附完整源码)
    查看>>
    Objective-C实现recursive bubble sor递归冒泡排序算法(附完整源码)
    查看>>
    Objective-C实现recursive insertion sort递归插入排序算法(附完整源码)
    查看>>
    Objective-C实现recursive quick sort递归快速排序算法(附完整源码)
    查看>>
    Objective-C实现RedBlackTree红黑树算法(附完整源码)
    查看>>
    Objective-C实现redis分布式锁(附完整源码)
    查看>>
    Objective-C实现reverse letters反向字母算法(附完整源码)
    查看>>
    Objective-C实现ripple adder涟波加法器算法(附完整源码)
    查看>>
    Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
    查看>>
    Objective-C实现Romberg算法(附完整源码)
    查看>>