当前位置:   article > 正文

Android Studio初学者实例:SQLite实验:绿豆通讯录

绿豆通讯录

本次实验是使用SQLite对一个通讯录表进行简单增删改查

以下是实验效果:

 首先是继承SQLiteOpenHelper的数据库自定义类

对于此类必须继承于SQLiteOpenHelper ,当new创造该类的实例的时候会执行创建数据库以及表的操作,例如本代码中数据库名为itcast,数据库表名为informatoin。db.execSQL为执行创建表语句

MyHelper
  1. import android.content.Context;
  2. import android.database.sqlite.SQLiteDatabase;
  3. import android.database.sqlite.SQLiteOpenHelper;
  4. public class MyHelper extends SQLiteOpenHelper {
  5. public MyHelper(Context context) {
  6. //上下文、数据库名、工厂、版本
  7. super(context, "itcast.db", null, 1);
  8. }
  9. @Override
  10. public void onCreate(SQLiteDatabase db) {
  11. //创建数据表 db.execSQL执行建表语句
  12. db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(20))");
  13. }
  14. @Override
  15. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  16. }
  17. }

主界面的界面代码

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="@drawable/bg"
  7. android:paddingLeft="16dp"
  8. android:paddingTop="16dp"
  9. android:paddingRight="16dp"
  10. android:paddingBottom="16dp"
  11. tools:context=".MainActivity">
  12. <LinearLayout
  13. android:id="@+id/ll_name"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:layout_above="@+id/ll_phone"
  17. android:layout_alignStart="@+id/ll_btn"
  18. android:layout_alignLeft="@+id/ll_btn">
  19. <TextView
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:text="姓 名 :"
  23. android:textSize="18sp" />
  24. <EditText
  25. android:id="@+id/et_name"
  26. android:layout_width="match_parent"
  27. android:layout_height="wrap_content"
  28. android:hint="请输入姓名"
  29. android:textSize="16sp" />
  30. </LinearLayout>
  31. <LinearLayout
  32. android:id="@+id/ll_phone"
  33. android:layout_width="match_parent"
  34. android:layout_height="wrap_content"
  35. android:layout_above="@+id/ll_btn"
  36. android:layout_alignStart="@+id/ll_name"
  37. android:layout_alignLeft="@+id/ll_name"
  38. android:layout_marginBottom="10dp">
  39. <TextView
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:text="电 话 :"
  43. android:textSize="18sp" />
  44. <EditText
  45. android:id="@+id/et_phone"
  46. android:layout_width="match_parent"
  47. android:layout_height="wrap_content"
  48. android:hint="请输入手机号码"
  49. android:textSize="16sp" />
  50. </LinearLayout>
  51. <LinearLayout
  52. android:id="@+id/ll_btn"
  53. android:layout_width="match_parent"
  54. android:layout_height="wrap_content"
  55. android:layout_centerVertical="true">
  56. <Button
  57. android:id="@+id/btn_add"
  58. android:layout_width="0dp"
  59. android:layout_height="wrap_content"
  60. android:layout_marginRight="2dp"
  61. android:layout_weight="1"
  62. android:background="#B9B9FF"
  63. android:text="添加"
  64. android:textSize="18sp" />
  65. <Button
  66. android:id="@+id/btn_query"
  67. android:layout_width="0dp"
  68. android:layout_height="wrap_content"
  69. android:layout_marginRight="2dp"
  70. android:layout_weight="1"
  71. android:background="#DCB5FF"
  72. android:text="查询"
  73. android:textSize="18sp" />
  74. <Button
  75. android:id="@+id/btn_update"
  76. android:layout_width="0dp"
  77. android:layout_height="wrap_content"
  78. android:layout_marginRight="2dp"
  79. android:layout_weight="1"
  80. android:background="#E6CAFF"
  81. android:text="修改"
  82. android:textSize="18sp" />
  83. <Button
  84. android:id="@+id/btn_delete"
  85. android:layout_width="0dp"
  86. android:layout_height="wrap_content"
  87. android:layout_weight="1"
  88. android:background="#ACD6FF"
  89. android:text="删除"
  90. android:textSize="18sp" />
  91. </LinearLayout>
  92. <ListView
  93. android:id="@+id/lv"
  94. android:layout_width="match_parent"
  95. android:layout_height="match_parent"
  96. android:layout_below="@+id/ll_btn"
  97. android:layout_margin="5dp"
  98. android:divider="#d9d9d9"
  99. android:dividerHeight="2dp">
  100. </ListView>
  101. </RelativeLayout>

 item界面代码

list_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content">
  5. <ImageView
  6. android:id="@+id/item_image"
  7. android:layout_width="100px"
  8. android:layout_height="100px"
  9. android:layout_margin="8dp"
  10. android:background="@drawable/tx" />
  11. <LinearLayout
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content"
  14. android:orientation="vertical">
  15. <TextView
  16. android:id="@+id/item_name"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_marginTop="3sp"
  20. android:text="姓名"
  21. android:textColor="#00FFFF"
  22. android:textSize="17sp" />
  23. <TextView
  24. android:id="@+id/item_phone"
  25. android:layout_width="wrap_content"
  26. android:layout_height="wrap_content"
  27. android:text="电话"
  28. android:textColor="#7FFFAA"
  29. android:textSize="16sp" />
  30. </LinearLayout>
  31. </LinearLayout>

 逻辑代码

MainActivity

  1. import androidx.appcompat.app.AppCompatActivity;
  2. import android.content.ContentValues;
  3. import android.database.Cursor;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import android.os.Bundle;
  6. import android.provider.ContactsContract;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.widget.EditText;
  10. import android.widget.ListView;
  11. import android.widget.SimpleCursorAdapter;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  15. MyHelper myHelper;
  16. private EditText mEtName;
  17. private EditText mEtPhone;
  18. private Button mBtnAdd;
  19. private Button mBtnQuery;
  20. private Button mBtnUpdate;
  21. private Button mBtnDelete;
  22. private ListView mList;
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. //new创建对象 传递上下文this
  28. myHelper = new MyHelper(this);
  29. init();//初始化控件 绑定控件
  30. }
  31. private void init() {
  32. mEtName = (EditText) findViewById(R.id.et_name);
  33. mEtPhone = (EditText) findViewById(R.id.et_phone);
  34. mBtnAdd = (Button) findViewById(R.id.btn_add);
  35. mBtnQuery = (Button) findViewById(R.id.btn_query);
  36. mBtnUpdate = (Button) findViewById(R.id.btn_update);
  37. mBtnDelete = (Button) findViewById(R.id.btn_delete);
  38. mBtnAdd.setOnClickListener(this);
  39. mBtnQuery.setOnClickListener(this);
  40. mBtnUpdate.setOnClickListener(this);
  41. mBtnDelete.setOnClickListener(this);
  42. mList = (ListView) findViewById(R.id.lv);
  43. }
  44. @Override
  45. public void onClick(View v) {
  46. String name;
  47. String phone;
  48. SQLiteDatabase db;
  49. ContentValues values;
  50. switch (v.getId()) {
  51. case R.id.btn_add: //添加数据
  52. name = mEtName.getText().toString();
  53. phone = mEtPhone.getText().toString();
  54. db = myHelper.getWritableDatabase();//获取可读写SQLiteDatabse对象
  55. values = new ContentValues(); // 创建ContentValues对象
  56. values.put("name", name); // 将数据添加到ContentValues对象
  57. values.put("phone", phone); // 将数据添加到ContentValues对象
  58. db.insert("information", null, values);//执行方法insert向数据表添加数据
  59. Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show();//提示框
  60. db.close();//关闭db
  61. break;
  62. case R.id.btn_query: //查询数据
  63. Toast.makeText(this, "query", Toast.LENGTH_SHORT).show();
  64. db = myHelper.getReadableDatabase();
  65. if(mEtName.getText().toString().isEmpty()){
  66. Cursor cursor = db.query("information", null, null, null, null, null, null);//Cursor作为一种游标的存储类型,来存储获取到的数据
  67. SimpleCursorAdapter spcAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,
  68. new String[]{"name", "phone"}, new int[]{R.id.item_name, R.id.item_phone});
  69. mList.setAdapter(spcAdapter);
  70. }else {
  71. Cursor cursor = db.rawQuery("select * from information where name=?", new String[]{mEtName.getText().toString()});
  72. SimpleCursorAdapter spcAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,
  73. new String[]{"name", "phone"}, new int[]{R.id.item_name, R.id.item_phone});
  74. mList.setAdapter(spcAdapter);
  75. }
  76. //cursor.close();
  77. //db.close();
  78. break;
  79. case R.id.btn_update: //修改数据
  80. db = myHelper.getWritableDatabase();
  81. values = new ContentValues(); // 要修改的数据
  82. values.put("phone", phone = mEtPhone.getText().toString());
  83. db.update("information", values, "name=?",
  84. new String[]{mEtName.getText().toString()}); // 更新并得到行数
  85. Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show();
  86. db.close();
  87. break;
  88. case R.id.btn_delete: //删除数据
  89. db = myHelper.getWritableDatabase();
  90. db.delete("information", "name=?",new String[]{mEtName.getText().toString()});
  91. Toast.makeText(this, mEtName.getText().toString()+"信息已删除", Toast.LENGTH_SHORT).show();
  92. db.close();
  93. break;
  94. }
  95. }
  96. }

 以上是一个简单的示例,详细的讲解未来补充,还有很多可以补充的地方,例如:采用实体类、换一个更详细的适配器Adapter、让通讯录的信息更加丰富等

需要资源 资源已经传到主页  绿豆通讯录   免积分下载,可以下载一下哦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/518037
推荐阅读
相关标签
  

闽ICP备14008679号