Android学习记录(2)—Android中数据库的常见操作

来源:互联网 发布:java 读取zip中的文件 编辑:程序博客网 时间:2024/06/03 12:52

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

   简单的代码文件目录:

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

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package net.loonggg.db;  
  2.   
  3. import android.content.Context;  
  4. import android.database.sqlite.SQLiteDatabase;  
  5. import android.database.sqlite.SQLiteOpenHelper;  
  6.   
  7. /** 
  8.  * 数据库帮助类,继承android自带的SQLiteOpenHelper 主要用于数据库的创建与更新 
  9.  *  
  10.  * @author loonggg 
  11.  *  
  12.  */  
  13. public class DBHelper extends SQLiteOpenHelper {  
  14.   
  15.     public DBHelper(Context context) {  
  16.         super(context, DBInfo.DB.DB_NAME, null, DBInfo.DB.DB_VERSION);  
  17.     }  
  18.   
  19.     @Override  
  20.     public void onCreate(SQLiteDatabase db) {  
  21.         db.execSQL(DBInfo.Table.USER_INFO_CREATE);  
  22.     }  
  23.   
  24.     @Override  
  25.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  26.         db.execSQL(DBInfo.Table.USER_INFO_DROP);  
  27.         onCreate(db);  
  28.     }  
  29.   
  30. }  
其次是数据库信息类,DBInfo.java,代码如下:

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

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

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package net.loonggg.test;  
  2.   
  3. import net.loonggg.service.DBService;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8.   
  9. public class MainActivity extends Activity {  
  10.     private Button queryOne;  
  11.     private Button insert;  
  12.     private Button update;  
  13.     private Button delete;  
  14.     private Button findAll;  
  15.     private DBService service;  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.activity_main);  
  21.         queryOne = (Button) findViewById(R.id.queryOne);  
  22.         insert = (Button) findViewById(R.id.insert);  
  23.         update = (Button) findViewById(R.id.update);  
  24.         delete = (Button) findViewById(R.id.delete);  
  25.         findAll = (Button) findViewById(R.id.findAll);  
  26.         queryOne.setOnClickListener(new ButtonListener());  
  27.         insert.setOnClickListener(new ButtonListener());  
  28.         update.setOnClickListener(new ButtonListener());  
  29.         delete.setOnClickListener(new ButtonListener());  
  30.         findAll.setOnClickListener(new ButtonListener());  
  31.         service = new DBService(this);  
  32.     }  
  33.   
  34.     class ButtonListener implements View.OnClickListener {  
  35.   
  36.         @Override  
  37.         public void onClick(View v) {  
  38.             switch (v.getId()) {  
  39.             case R.id.queryOne:  
  40.                 // service.find("loonggg");  
  41.                 service.findAndroid("loonggg");  
  42.                 break;  
  43.             case R.id.insert:  
  44.                 // service.add("1", "loonggg");  
  45.                 service.addAndroid("2""heihei");  
  46.                 break;  
  47.             case R.id.update:  
  48.                 // service.update("1", "timmy");  
  49.                 service.updateAndroid("1""haha");  
  50.                 break;  
  51.             case R.id.delete:  
  52.                 // service.delete("timmy");  
  53.                 service.deleteAndroid("heihei");  
  54.                 break;  
  55.             case R.id.findAll:  
  56.                 // service.findAll();  
  57.                 service.findAllAndroid();  
  58.                 break;  
  59.   
  60.             default:  
  61.                 break;  
  62.             }  
  63.         }  
  64.     }  
  65.   
  66. }  
还有MainActivity对应的布局文件,activity_main.xml:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  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.   
  7.     <Button  
  8.         android:id="@+id/queryOne"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="查询一条记录" />  
  12.   
  13.     <Button  
  14.         android:id="@+id/insert"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:text="添加" />  
  18.   
  19.     <Button  
  20.         android:id="@+id/update"  
  21.         android:layout_width="fill_parent"  
  22.         android:layout_height="wrap_content"  
  23.         android:text="修改" />  
  24.   
  25.     <Button  
  26.         android:id="@+id/delete"  
  27.         android:layout_width="fill_parent"  
  28.         android:layout_height="wrap_content"  
  29.         android:text="删除" />  
  30.   
  31.     <Button  
  32.         android:id="@+id/findAll"  
  33.         android:layout_width="fill_parent"  
  34.         android:layout_height="wrap_content"  
  35.         android:text="查询全部" />  
  36.   
  37. </LinearLayout>  
到这里就介绍完了,这些代码并不高深,之所以记录下来,是留着以后用到的时候方便查看,当然这个代码对于初学者,还是非常有帮助的。

转载请说明出处:http://blog.csdn.net/loongggdroid/article/details/17463777

0 0
原创粉丝点击