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

Android SQLite数据库操作实例

2013-09-10 07:17 686 查看
          SQLite是一种轻型的嵌入式数据库,它占用的资源很少,android系统中就是采用这种数据库。下面介绍一下SQLite在Android中的具体操作步骤。

 

一、首先要创建一个SQLiteOpenHelper的派生类。本文中创建了一个DBOpenHelper继承SQLiteOpenHelper,覆写oncreate()方法。

 

public class DBOpenHelper extends SQLiteOpenHelper {
// database's name
private static String DB_NAME = "person.db";
// database's version
private static int DB_VERSION = 1;
// create table person SQL
private String CreatTable_sql = "create table person (id integer primary key autoincrement,"
+ "name varchar(20)," + "phoneNumber varchar(20)" + ")";

public DBOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CreatTable_sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}


 

二、创建一个数据库业务操作类。本文中的业务操作实现了添加一个记录和查询所有的记录以及关闭数据库的方法。query()方法中,如果在return cursor 前面执行database.close的话,返回的cursor是空。所以在后面调用了query()方法之后还要执行closeDB()方法去关闭数据。

       注: 在对数据库操作结束后,记得关闭数据库。

 

public class PersonDAO {
private DBOpenHelper helper;
private SQLiteDatabase database;

public PersonDAO(Context context) {
helper = new DBOpenHelper(context);
}
/**
* insert a record into table
* @param name : record's name
* @param phoneNumber : record's phoneNumber
*/
public void add(String name,String phoneNumber){
database = helper.getWritableDatabase();
database.execSQL("insert into person('name','phoneNumber') values (?,?)",  new String[]{name,phoneNumber});
database.close();
}
/**
* query all record
* @return : cursor
*/
public Cursor query(){
database = helper.getWritableDatabase();
Cursor cursor = database.rawQuery("select * from person", null);
return cursor;
}
/**
*close database
*/
public void closeDB(){
database.close();
}
}


 

 

三、android界面实现上面的添加记录功能和查询所有记录的功能。用ListView 把查询的所有结果展示出来。这边应用了Handler机制和多线程。

 

public class MainActivity extends Activity {

private EditText et_name, et_phoneNumber;
private Button btn_add, btn_query;
private ListView lv_all;
private PersonDAO personDao;
private Cursor cursor = null;
private List<Map<String, Object>> list = null;
/**
* a handler to handleMessage of make list complete
* create a SimpleAdapter
* Instance listview setAdapter
*/
private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case 1001:
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,
list, R.layout.item, new String[] { "id", "name",
"phoneNumber" }, new int[] { R.id.tv_id,
R.id.tv_name, R.id.tv_phoneNumber });
lv_all.setAdapter(adapter);
break;
}
}

};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
et_phoneNumber = (EditText) findViewById(R.id.et_phoneNumber);
btn_add = (Button) findViewById(R.id.btn_add);
btn_query = (Button) findViewById(R.id.btn_query);
lv_all = (ListView) findViewById(R.id.lv_all);
personDao = new PersonDAO(this);// new a PersonDao instance
//execute a record
btn_add.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
String name = et_name.getText().toString();
String phoneNumber = et_phoneNumber.getText().toString();
personDao.add(name, phoneNumber);
Log.d("DBDemo", "add a record");
}
});
//execute query all records
btn_query.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
cursor = personDao.query();
list = new ArrayList<Map<String, Object>>();
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Map<String, Object> map = new HashMap<String, Object>();
Log.d("DBDemo", "add a cursor record");
map.put("id",
cursor.getInt(cursor.getColumnIndex("id")));
map.put("name", cursor.getString(cursor
.getColumnIndex("name")));
map.put("phoneNumber", cursor.getString(cursor
.getColumnIndex("phoneNumber")));
list.add(map);
cursor.moveToNext();
}
personDao.closeDB();
Message msg = new Message();
msg.what = 1001;
handler.sendMessage(msg);
}
}).start();

}
});
}
}


 

 

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