首页 > 系统 > Android > 正文

Android中数据库常见操作实例分析

2019-10-24 20:35:07
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Android中数据库常见操作,以完整实例形式较为详细的分析了Android基于数据库类进行数据库的增删改查等操作技巧,需要的朋友可以参考下

本文实例讲述了Android中数据库常见操作。分享给大家供大家参考,具体如下:

android中数据库操作是非常常见了,我们会经常用到,操作的方法也有很多种形式,这里我就把最常见的两种形式记录下来了,以备以后用到方便查看。我就不写注释和解释了,因为android数据库的操作和其它数据库操作本质上都是一样的,大同小异。需要的一些基本解释都在代码中,直接上代码了。

简单的代码文件目录:

Android中数据库常见操作实例分析

首先这个类是数据库帮助类,DBHelper.java,代码如下:

 

 
  1. package net.loonggg.db;  
  2. import android.content.Context;  
  3. import android.database.sqlite.SQLiteDatabase;  
  4. import android.database.sqlite.SQLiteOpenHelper;  
  5. /**  
  6. * 数据库帮助类,继承android自带的SQLiteOpenHelper 主要用于数据库的创建与更新  
  7.  
  8. * @author loonggg  
  9.  
  10. */ 
  11. public class DBHelper extends SQLiteOpenHelper {  
  12. public DBHelper(Context context) {  
  13. super(context, DBInfo.DB.DB_NAME, null, DBInfo.DB.DB_VERSION);  
  14. }  
  15. @Override 
  16. public void onCreate(SQLiteDatabase db) {  
  17. db.execSQL(DBInfo.Table.USER_INFO_CREATE);  
  18. }  
  19. @Override 
  20. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  21. db.execSQL(DBInfo.Table.USER_INFO_DROP);  
  22. onCreate(db);  
  23. }  

其次是数据库信息类,DBInfo.java,代码如下:

 

 
  1. package net.loonggg.db;  
  2. /**  
  3. * 数据库信息类,主要是保存一些数据库的版本,名字,及数据库表的创建语句和表的信息等,通过这个类记录,方便操作  
  4.  
  5. * @author loonggg  
  6.  
  7. */ 
  8. public class DBInfo {  
  9. /**  
  10. * 数据库信息  
  11.  
  12. * @author loonggg  
  13.  
  14. */ 
  15. public static class DB {  
  16. // 数据库名称  
  17. public static final String DB_NAME = "test.db";  
  18. // 数据库的版本号  
  19. public static final int DB_VERSION = 1;  
  20. }  
  21. /**  
  22. * 数据库表的信息  
  23.  
  24. * @author loonggg  
  25.  
  26. */ 
  27. public static class Table {  
  28. public static final String USER_INFO_TB_NAME = "user_table";  
  29. public static final String USER_INFO_CREATE = "CREATE TABLE IF NOT EXISTS " 
  30. + USER_INFO_TB_NAME  
  31. " ( _id INTEGER PRIMARY KEY,userId text,userName text)";  
  32. public static final String USER_INFO_DROP = "DROP TABLE" 
  33. + USER_INFO_TB_NAME;  
  34. }  

再次是数据库操作类,DBService.java,代码如下:

 

 
  1. package net.loonggg.service;  
  2. import java.util.ArrayList;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import net.loonggg.db.DBHelper;  
  6. import net.loonggg.db.DBInfo.Table;  
  7. import android.content.ContentValues;  
  8. import android.content.Context;  
  9. import android.database.Cursor;  
  10. import android.database.sqlite.SQLiteDatabase;  
  11. /**  
  12. * 数据库操作类,这个类主要的功能是:存放数据库操作的一些方法 这里有一些例子:包含数据库的增删改查,分别有两种方法的操作,各有优缺点,都在解释中  
  13.  
  14. * @author loonggg  
  15.  
  16. */ 
  17. public class DBService {  
  18. private DBHelper dbHelper = null;  
  19. public DBService(Context context) {  
  20. dbHelper = new DBHelper(context);  
  21. }  
  22. /**  
  23. * 添加一条记录到数据库  
  24.  
  25. * @param id  
  26. * @param name  
  27. */ 
  28. public void add(String id, String name) {  
  29. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  30. // 不好之处:无返回值,无法判断是否插入成功  
  31. db.execSQL("insert into user_table (userId,userName) values (?,?)",  
  32. new Object[] { id, name });  
  33. db.close();  
  34. }  
  35. public long addAndroid(String id, String name) {  
  36. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  37. ContentValues values = new ContentValues();  
  38. values.put("userId", id);  
  39. values.put("userName", name);  
  40. // 好处:有返回值  
  41. long result = db.insert(Table.USER_INFO_TB_NAME, null, values);// 返回值是插入的是第几行,大于0代表添加成功  
  42. db.close();  
  43. return result;  
  44. }  
  45. /**  
  46. * 查询某条记录是否存在  
  47.  
  48. * @param name  
  49. * @return  
  50. */ 
  51. public boolean find(String name) {  
  52. SQLiteDatabase db = dbHelper.getReadableDatabase();  
  53. Cursor cursor = db.rawQuery(  
  54. "select * from user_table where userName = ?",  
  55. new String[] { name });  
  56. boolean result = cursor.moveToNext();  
  57. db.close();  
  58. return result;  
  59. }  
  60. public boolean findAndroid(String name) {  
  61. SQLiteDatabase db = dbHelper.getReadableDatabase();  
  62. Cursor cursor = db.query(Table.USER_INFO_TB_NAME, null"userName = ?",  
  63. new String[] { name }, nullnullnull);  
  64. boolean result = cursor.moveToNext();// true代表查找到了  
  65. db.close();  
  66. return result;  
  67. }  
  68. /**  
  69. * 修改一条记录  
  70.  
  71. * @param id  
  72. * @param name  
  73. */ 
  74. public void update(String id, String name) {  
  75. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  76. // 缺点无返回值  
  77. db.execSQL("update user_table set userName = ? where userId = ?",  
  78. new Object[] { name, id });  
  79. db.close();  
  80. }  
  81. public int updateAndroid(String id, String name) {  
  82. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  83. ContentValues values = new ContentValues();  
  84. values.put("userName", name);  
  85. // 返回值大于0代表修改更新成功  
  86. int result = db.update(Table.USER_INFO_TB_NAME, values, "userId = ?",  
  87. new String[] { id });  
  88. db.close();  
  89. return result;  
  90. }  
  91. /**  
  92. * 删除一条记录  
  93.  
  94. * @param name  
  95. */ 
  96. public void delete(String name) {  
  97. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  98. db.execSQL("delete from user_table where userName = ?",  
  99. new String[] { name });  
  100. db.close();  
  101. }  
  102. public int deleteAndroid(String name) {  
  103. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  104. int result = db.delete(Table.USER_INFO_TB_NAME, "userName = ?",  
  105. new String[] { name });// 返回值为受影响的行数,大于0代表成功  
  106. db.close();  
  107. return result;  
  108. }  
  109. /**  
  110. * 返回所有的数据库信息  
  111.  
  112. * @return  
  113. */ 
  114. public List<HashMap<String, String>> findAll() {  
  115. List<HashMap<String, String>> list = null;  
  116. SQLiteDatabase db = dbHelper.getReadableDatabase();  
  117. Cursor cursor = db.rawQuery("select * from user_table"null);  
  118. if (cursor.getCount() > 0) {  
  119. list = new ArrayList<HashMap<String, String>>();  
  120. while (cursor.moveToNext()) {  
  121. String id = cursor.getString(cursor.getColumnIndex("userId"));  
  122. String name = cursor.getString(cursor  
  123. .getColumnIndex("userName"));  
  124. HashMap<String, String> map = new HashMap<String, String>();  
  125. map.put("id", id);  
  126. map.put("name", name);  
  127. list.add(map);  
  128. }  
  129. }  
  130. cursor.close();  
  131. db.close();  
  132. return list;  
  133. }  
  134. public List<HashMap<String, String>> findAllAndroid() {  
  135. List<HashMap<String, String>> list = null;  
  136. SQLiteDatabase db = dbHelper.getReadableDatabase();  
  137. Cursor cursor = db.query(Table.USER_INFO_TB_NAME, new String[] {  
  138. "userId""userName" }, nullnullnullnullnull);  
  139. if (cursor.getCount() > 0) {  
  140. list = new ArrayList<HashMap<String, String>>();  
  141. while (cursor.moveToNext()) {  
  142. String id = cursor.getString(cursor.getColumnIndex("userId"));  
  143. String name = cursor.getString(cursor  
  144. .getColumnIndex("userName"));  
  145. HashMap<String, String> map = new HashMap<String, String>();  
  146. map.put("id", id);  
  147. map.put("name", name);  
  148. list.add(map);  
  149. }  
  150. }  
  151. cursor.close();  
  152. db.close();  
  153. return list;  
  154. }  

最后是MainActivity,简单的调用了一下,这些操作,代码如下:

 

 
  1. package net.loonggg.test;  
  2. import net.loonggg.service.DBService;  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.Button;  
  7. public class MainActivity extends Activity {  
  8. private Button queryOne;  
  9. private Button insert;  
  10. private Button update;  
  11. private Button delete;  
  12. private Button findAll;  
  13. private DBService service;  
  14. @Override 
  15. protected void onCreate(Bundle savedInstanceState) {  
  16. super.onCreate(savedInstanceState);  
  17. setContentView(R.layout.activity_main);  
  18. queryOne = (Button) findViewById(R.id.queryOne);  
  19. insert = (Button) findViewById(R.id.insert);  
  20. update = (Button) findViewById(R.id.update);  
  21. delete = (Button) findViewById(R.id.delete);  
  22. findAll = (Button) findViewById(R.id.findAll);  
  23. queryOne.setOnClickListener(new ButtonListener());  
  24. insert.setOnClickListener(new ButtonListener());  
  25. update.setOnClickListener(new ButtonListener());  
  26. delete.setOnClickListener(new ButtonListener());  
  27. findAll.setOnClickListener(new ButtonListener());  
  28. service = new DBService(this);  
  29. }  
  30. class ButtonListener implements View.OnClickListener {  
  31. @Override 
  32. public void onClick(View v) {  
  33. switch (v.getId()) {  
  34. case R.id.queryOne:  
  35. // service.find("loonggg");  
  36. service.findAndroid("loonggg");  
  37. break;  
  38. case R.id.insert:  
  39. // service.add("1", "loonggg");  
  40. service.addAndroid("2""heihei");  
  41. break;  
  42. case R.id.update:  
  43. // service.update("1", "timmy");  
  44. service.updateAndroid("1""haha");  
  45. break;  
  46. case R.id.delete:  
  47. // service.delete("timmy");  
  48. service.deleteAndroid("heihei");  
  49. break;  
  50. case R.id.findAll:  
  51. // service.findAll();  
  52. service.findAllAndroid();  
  53. break;  
  54. default:  
  55. break;  
  56. }  
  57. }  
  58. }  

还有MainActivity对应的布局文件,activity_main.xml:

 

 
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2. xmlns:tools="http://schemas.android.com/tools" 
  3. android:layout_width="match_parent" 
  4. android:layout_height="match_parent" 
  5. android:orientation="vertical" >  
  6. <Button 
  7. android:id="@+id/queryOne" 
  8. android:layout_width="fill_parent" 
  9. android:layout_height="wrap_content" 
  10. android:text="查询一条记录" />  
  11. <Button 
  12. android:id="@+id/insert" 
  13. android:layout_width="fill_parent" 
  14. android:layout_height="wrap_content" 
  15. android:text="添加" />  
  16. <Button 
  17. android:id="@+id/update" 
  18. android:layout_width="fill_parent" 
  19. android:layout_height="wrap_content" 
  20. android:text="修改" />  
  21. <Button 
  22. android:id="@+id/delete" 
  23. android:layout_width="fill_parent" 
  24. android:layout_height="wrap_content" 
  25. android:text="删除" />  
  26. <Button 
  27. android:id="@+id/findAll" 
  28. android:layout_width="fill_parent" 
  29. android:layout_height="wrap_content" 
  30. android:text="查询全部" />  
  31. </LinearLayout> 

到这里就介绍完了,这些代码并不高深,之所以记录下来,是留着以后用到的时候方便查看,当然这个代码对于初学者,还是非常有帮助的。

希望本文所述对大家Android程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表