|
学习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;
}
}
运行结果如下:
把工程目录结构也贴上:
|
|