SqliteDatabase之如何读取数据库()

来源:互联网 发布:sql语言培训班 编辑:程序博客网 时间:2024/06/04 21:00

代码:


package com.qianfeng.sqlitedatabase;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.os.Environment;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {private ListView lv;private List<Map<String, Object>> list;private SQLiteDatabase db ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);list = new ArrayList<Map<String,Object>>();lv = (ListView) findViewById(R.id.lv);String path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"Download"+File.separator+"info.db";/** * openDatabase 用来打开或创建数据库的方法 * 参数1:数据库的路径  * 参数2:CursorFactory * 参数3:访问数据库的权限 */db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);list = getToDbData();//得到数据库中的数据源SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list, R.layout.item, new String[]{"_id","name"}, new int[]{R.id.textView1,R.id.textView2});lv.setAdapter(adapter);}/** * 查询数据库表中的数据 保存到 list里 * @return */public List<Map<String, Object>> getToDbData(){List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();//Cursor cursor = db.query("person", null, null, null, null, null, null);Cursor cursor=db.query("person", null,null, null, null, null, "_id desc");while(cursor.moveToNext()){Map<String, Object> map = new HashMap<String, Object>();int id = cursor.getInt(cursor.getColumnIndex("_id"));String name = cursor.getString(cursor.getColumnIndex("name"));map.put("_id", id);map.put("name", name);list.add(map);}return list;}}
(2) SimpCursorAdapter:

package com.qianfeng.sqlitedatabase;import java.io.File;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.os.Environment;import android.support.v4.widget.SimpleCursorAdapter;import android.widget.ListView;public class SimpCursorAdapterActivity extends Activity {private ListView lv;private SQLiteDatabase db;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.lv);String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+ "Download"+ File.separator + "info.db";/** * openDatabase 用来打开或创建数据库的方法 参数1:数据库的路径 参数2:CursorFactory 参数3:访问数据库的权限 */db = SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READWRITE);Cursor c = db.rawQuery("select * from person", null);/** * 参数1:上下文对象 * 参数2:每个itme的布局 * 参数3:cursor对象 * 参数4:cursor查询的字段数组 * 参数5:布局里控件的id * 参数6:标记 */SimpleCursorAdapter adapter = new SimpleCursorAdapter(SimpCursorAdapterActivity.this, R.layout.item, c, new String[] {"_id", "name" }, new int[] { R.id.textView1,R.id.textView2 },SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);lv.setAdapter(adapter);}}

(3)CursorAdapter:

package com.qianfeng.sqlitedatabase;import java.io.File;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.os.Environment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CursorAdapter;import android.widget.ListView;import android.widget.TextView;public class CursorAdapterActivity extends Activity{private ListView lv;private SQLiteDatabase db;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.lv);String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+ "Download"+ File.separator + "info.db";/** * openDatabase 用来打开或创建数据库的方法 参数1:数据库的路径 参数2:CursorFactory 参数3:访问数据库的权限 */db = SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READWRITE);Cursor c = db.rawQuery("select * from person", null);MyCursorAdapter adapter = new MyCursorAdapter(CursorAdapterActivity.this, c);lv.setAdapter(adapter);}/** * 自定义一个CursorAdapter * */class MyCursorAdapter extends CursorAdapter{public MyCursorAdapter(Context context, Cursor c) {super(context, c);// TODO Auto-generated constructor stub}/** * 创建每个item的布局对象 * 返回的的列表中 item的view */@Overridepublic View newView(Context context, Cursor cursor, ViewGroup parent) {// TODO Auto-generated method stubreturn LayoutInflater.from(context).inflate(R.layout.item, null);}/** * 获取newView里view布局  之后 将cursor里的数据绑定给view的控件 * 参数1:newView返回的View * 参数2:上下文对象 * 参数3:带有数据的Cursor对象 */@Overridepublic void bindView(View view, Context context, Cursor cursor) {// TODO Auto-generated method stubTextView tv1 = (TextView) view.findViewById(R.id.textView1);TextView tv2 = (TextView) view.findViewById(R.id.textView2);int id = cursor.getInt(cursor.getColumnIndex("_id"));String name = cursor.getString(cursor.getColumnIndex("name"));tv1.setText(id+"");tv2.setText(name);}}}



1 0