当前位置:   article > 正文

Android开发——SQLite数据库(二)android studio创建数据库,进行插入、删除、更新、查询操作_android studio mdatabase.delete

android studio mdatabase.delete

运行效果:

本文对数据库的建立、更新,数据的插入、更新、查询、删除,及事务的处理进行示例讲解。

代码里有注释帮助理解。

实现代码:

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:id="@+id/activity_main"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context="com.example.administrator.dbexcise.MainActivity">
  9. <Button
  10. android:id="@+id/bt1"
  11. android:layout_width="match_parent"
  12. android:layout_height="wrap_content"
  13. android:text="Create DB"
  14. android:textAllCaps="false"
  15. android:onClick="testCreateDB"/>
  16. <Button
  17. android:id="@+id/bt2"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:text="Insert Date"
  21. android:textAllCaps="false"
  22. android:onClick="testInsertDate"/>
  23. <Button
  24. android:id="@+id/bt3"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:text="Delete Date"
  28. android:textAllCaps="false"
  29. android:onClick="testDeleteDate"/>
  30. <Button
  31. android:id="@+id/bt4"
  32. android:layout_width="match_parent"
  33. android:layout_height="wrap_content"
  34. android:text="Update Date"
  35. android:textAllCaps="false"
  36. android:onClick="testUpdateDate"/>
  37. <Button
  38. android:id="@+id/bt5"
  39. android:layout_width="match_parent"
  40. android:layout_height="wrap_content"
  41. android:text="Query Date"
  42. android:textAllCaps="false"
  43. android:onClick="testQueryDate"/>
  44. <Button
  45. android:id="@+id/bt6"
  46. android:layout_width="match_parent"
  47. android:layout_height="wrap_content"
  48. android:text="Handle affair"
  49. android:textAllCaps="false"
  50. android:onClick="testHandleAffair"/>
  51. </LinearLayout>

DBHelper

  1. package com.example.administrator.dbexcise.database;
  2. import android.content.Context;
  3. import android.database.sqlite.SQLiteDatabase;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. import android.util.Log;
  6. /**
  7. * Created by Administrator on 2019/6/19.
  8. */
  9. public class DBHelper extends SQLiteOpenHelper {
  10. public DBHelper(Context context, int version) {
  11. //上下文,数据库文件名,null,版本号
  12. super(context, "person.db", null, version);
  13. }
  14. /**
  15. * 什么时候调用?
  16. * 当数据库文件创建时调用
  17. * 在此方法中做什么?
  18. * 建表,初始化数据
  19. * @param sqLiteDatabase 是操作数据库的对象
  20. */
  21. @Override
  22. public void onCreate(SQLiteDatabase sqLiteDatabase) {
  23. Log.e("TAG", "onCreate: " );
  24. String sql = "create table person (_id integer primary key autoincrement,name varchar,age int)";
  25. sqLiteDatabase.execSQL(sql);
  26. }
  27. /**
  28. * 当传入的版本号大于当前数据库的版本号时调用
  29. * 用于更新数据库
  30. * @param sqLiteDatabase
  31. * @param i
  32. * @param i1
  33. */
  34. @Override
  35. public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
  36. Log.d("TAG", "onUpgrade: ");
  37. }
  38. }

MainActivity

  1. package com.example.administrator.dbexcise;
  2. import android.content.ContentValues;
  3. import android.content.Intent;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.Toast;
  11. import com.example.administrator.dbexcise.database.DBHelper;
  12. public class MainActivity extends AppCompatActivity {
  13. Button button, button2, button3, button4, button5, button6;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. button = (Button) findViewById(R.id.bt1);
  19. button2 = (Button) findViewById(R.id.bt2);
  20. button3 = (Button) findViewById(R.id.bt3);
  21. button4 = (Button) findViewById(R.id.bt4);
  22. button5 = (Button) findViewById(R.id.bt5);
  23. button6 = (Button) findViewById(R.id.bt6);
  24. }
  25. /**
  26. * 创建库
  27. *
  28. * @param view
  29. */
  30. public void testCreateDB(View view) {
  31. DBHelper dbHelper = new DBHelper(this, 1);
  32. //获取连接
  33. SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
  34. Toast.makeText(this, "创建数据库", Toast.LENGTH_SHORT).show();
  35. }
  36. /**
  37. * 插入数据
  38. *
  39. * @param view
  40. */
  41. public void testInsertDate(View view) {
  42. DBHelper dbHelper = new DBHelper(this,2);
  43. //1.得到连接
  44. SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
  45. //2.执行insert
  46. ContentValues values = new ContentValues();
  47. values.put("name","Tom");
  48. values.put("age",21);
  49. //返回插入的id
  50. /**
  51. * 第一个参数:表名
  52. * 第二个参数:null
  53. * 第三个参数:传入的HashMap值
  54. */
  55. long id = sqLiteDatabase.insert("person",null,values);
  56. //3.关闭连接
  57. sqLiteDatabase.close();
  58. //4.提示
  59. Toast.makeText(this,"id= "+id,Toast.LENGTH_SHORT).show();
  60. }
  61. /**
  62. * 删除数据
  63. *
  64. * @param view
  65. */
  66. public void testDeleteDate(View view) {
  67. DBHelper dbHelper = new DBHelper(this,2);
  68. //1.得到连接
  69. SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
  70. //2.执行delete
  71. String where = "name = ?";
  72. String[] value = new String[]{ "Tom" };
  73. //返回删除的数量
  74. /**
  75. * 第一个参数:表名
  76. * 第二个参数:删除的where后的语句
  77. * 第三个参数:? 所代表的值
  78. */
  79. int deleteCount = sqLiteDatabase.delete("person",where,value);
  80. //3.关闭连接
  81. sqLiteDatabase.close();
  82. //4.提示
  83. Toast.makeText(this,"deleteCount = "+deleteCount,Toast.LENGTH_SHORT).show();
  84. }
  85. /**
  86. * 更新数据
  87. *
  88. * @param view
  89. */
  90. public void testUpdateDate(View view) {
  91. DBHelper dbHelper = new DBHelper(this,2);
  92. //1.得到连接
  93. SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
  94. //2.执行update update person set name = "Jack",age = 20 where _id = 6
  95. /**
  96. * 第一个参数:表名
  97. * 第二个参数:更新的value
  98. * 第三个参数:where 后的语句
  99. * 第四个参数:? 所代表的值
  100. */
  101. ContentValues values = new ContentValues();
  102. values.put("name","Jack");
  103. values.put("age",20);
  104. int updateCount = sqLiteDatabase.update("person",values,"_id = 6",null);
  105. //3.关闭连接
  106. sqLiteDatabase.close();
  107. //4.提示
  108. Toast.makeText(this,"updateCount = "+updateCount,Toast.LENGTH_SHORT).show();
  109. }
  110. /**
  111. * 查询数据
  112. *
  113. * @param view
  114. */
  115. public void testQueryDate(View view) {
  116. DBHelper dbHelper = new DBHelper(this,2);
  117. //1.得到连接
  118. SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
  119. //2.执行query select * from person
  120. Cursor cursor = sqLiteDatabase.query("person",null,null,null,null,null,null);
  121. //得到cursor查询到的总记录数
  122. int count = cursor.getCount();
  123. while(cursor.moveToNext()){
  124. // id
  125. int id = cursor.getInt(0);
  126. // name
  127. String name = cursor.getString(1);
  128. // age
  129. int age = cursor.getInt(cursor.getColumnIndex("age"));
  130. }
  131. //3.关闭连接
  132. cursor.close();
  133. sqLiteDatabase.close();
  134. //4.提示
  135. Toast.makeText(this,"count = "+count,Toast.LENGTH_SHORT).show();
  136. }
  137. /**
  138. * 事务处理
  139. *
  140. * 一个功能中对数据库进行多个操作,要就都成功要就都失败
  141. * 事务处理三步骤:
  142. * 1. 开启事务(获取连接后)
  143. * 2. 设置事务成功(在全部正常执行完后)
  144. * 3. 结束事务(finally中进行)
  145. *
  146. * @param view
  147. */
  148. public void testHandleAffair(View view) {
  149. SQLiteDatabase sqLiteDatabase = null;
  150. try {
  151. DBHelper dbHelper = new DBHelper(this,2);
  152. //1.得到连接
  153. sqLiteDatabase = dbHelper.getReadableDatabase();
  154. //1. 开启事务(获取连接后)
  155. sqLiteDatabase.beginTransaction();
  156. //2.执行update update person set age = 20 where _id = 6
  157. ContentValues values = new ContentValues();
  158. values.put("age",20);
  159. int updateCount = sqLiteDatabase.update("person",values,"_id = 6",null);
  160. boolean flag = true;
  161. if(flag) {
  162. throw new RuntimeException("出异常啦!!");
  163. }
  164. //执行update update person set age = 21 where _id = 7
  165. values.put("age",21);
  166. int updateCount2 = sqLiteDatabase.update("person",values,"_id = 7",null);
  167. //2.设置事务成功(在全部正常执行完后)
  168. sqLiteDatabase.setTransactionSuccessful();
  169. }catch (Exception e) {
  170. Toast.makeText(this,"出异常啦!!!",Toast.LENGTH_SHORT).show();
  171. }finally {
  172. if (sqLiteDatabase!=null) {
  173. //3.结束事务(finally中进行)
  174. sqLiteDatabase.endTransaction();
  175. //3.关闭连接
  176. sqLiteDatabase.close();
  177. }
  178. }
  179. }
  180. }

注意:new一个数据库对象后,一定要获取连接再进行操作。

 

链接:https://pan.baidu.com/s/1TwNX_V0pI-yPSBFqJpm9DA 


提取码:hnz2

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