学习Android有几天了,今天研究了下SQLite的简单操作,现在分享给奋斗在一线的苦逼程序员们,共勉吧。
Android系统提供了一个SQLiteOpenHelper的一个辅助类,使用此类可以完成对数据库的创建及更新,写了一个简单的类,代码如下:
package com.van.sqlite.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper{ /**数据库名称*/ private static final String DATABASE_NAME="MyAppDB"; /**数据库版本*/ private static final int DATABASE_VERSION=1; /** 创建数据表语句*/ private static final String DDL_CREATE_TABLE_APPINFO="CREATE TABLE IF NOT EXISTS AppInfo (appId integer primary key autoincrement,appName text,appDescription text, remark text)"; /** * 实例化数据库连接. * @param context */ public DBOpenHelper(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); /**初始化数据表*/ this.getWritableDatabase().execSQL(DDL_CREATE_TABLE_APPINFO); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
布局文件: main.xml,只添加了一个ListView用于显示数据
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listView_appList" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
数据列表的项实现:list_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView_appName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textView_appDescription" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout>
SQLiteDemoActivity 代码:
package com.van.sqlite; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; import com.van.sqlite.db.DBOpenHelper; public class SQLiteDemoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //initData(); //这个方法只是用来临时加载一下数据以备显示 ListView listView=(ListView)findViewById(R.id.listView_appList); //获取查询结果 ArrayList<HashMap<String, Object>> listData=fillList(); //获取适配器 SimpleAdapter adapter=fillAdapter(listData); //添加并且显示 listView.setAdapter(adapter); } /** * 插入数据操作 */ public void initData(){ DBOpenHelper helper=new DBOpenHelper(this); ContentValues values=new ContentValues(); values.put("appName", "手机QQ2212"); values.put("appDescription", "手机QQ2012是腾讯公司基于移动终端开发的一款应用软件。"); values.put("remark", "手机QQ2012是腾讯公司基于移动终端开发的一款应用软件。"); helper.getWritableDatabase().insert("AppInfo", null, values); } /** * 查询AppInfo返回Map集合 * @return */ public ArrayList<HashMap<String, Object>> fillList(){ //生成动态数组,并且转载数据 ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>(); DBOpenHelper helper=new DBOpenHelper(this); SQLiteDatabase db=helper.getReadableDatabase(); try{ Cursor cursor=db.rawQuery("SELECT * FROM AppInfo", null); cursor.moveToFirst(); if(cursor.moveToFirst()) { Integer appId = cursor.getInt(cursor.getColumnIndex("appId")); String appName = cursor.getString(cursor.getColumnIndex("appName")); String appDescription = cursor.getString(cursor.getColumnIndex("appDescription")); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("appId",appId); map.put("appName", appName); map.put("appDescription", appDescription); dataList.add(map); } }catch(Exception ex){ ex.printStackTrace(); }finally{ if(db.isOpen()){ db.close(); } } return dataList; } /** * 填充数据,取得数据适配器. * @param listData * @return */ public SimpleAdapter fillAdapter(ArrayList<HashMap<String, Object>> listData){ //生成适配器,数组===》ListItem SimpleAdapter adapter = new SimpleAdapter(this, listData,//数据来源 R.layout.list_item,//ListItem的XML实现 //动态数组与ListItem对应的子项 new String[] {"appName", "appDescription"}, //ListItem的XML文件里面的两个TextView ID new int[] {R.id.textView_appName,R.id.textView_appDescription}); return adapter; } }
运行结果如下:
把工程目录结构也贴上: