您的位置:首页 > 移动开发 > Android开发

Android简单的SQLite操作及ListView展示数据

2013-02-04 09:02 525 查看
学习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;

}
}


运行结果如下:



把工程目录结构也贴上:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: