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

Android数据存储之sqlite3

2013-12-29 23:11 197 查看
一、命令篇

# cd /data/data/com.aug.databaseoperate

# ls

databases

lib

# cd databases

# ls

AugTest.db

# sqlite3 AugTest.db   //登录数据库.db

sqlite3 AugTest.db

SQLite version 3.6.22

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite> .databases     //查看当前已有的数据库

.databases

seq  name             file

---  ---------------  ----------------------------------------------------------

0    main             /data/data/com.aug.databaseoperate/databases/AugTest.db

sqlite>.help     //或. help  帮助命令

.backup ?DB? FILE      Backup DB (default "main") to FILE

.bail ON|OFF           Stop after hitting an error.  Default OFF

.databases             List names and files of attached databases

.dump ?TABLE? ...      Dump the database in an SQL text format

                         If TABLE specified, only dump tables matching

                         LIKE pattern TABLE.

.echo ON|OFF           Turn command echo on or off

.exit                  Exit this program

.explain ?ON|OFF?      Turn output mode suitable for EXPLAIN on or off.

                         With no args, it turns EXPLAIN on.

.header(s) ON|OFF      Turn display of headers on or off

.help                  Show this message

.import FILE TABLE     Import data from FILE into TABLE

.indices ?TABLE?       Show names of all indices

                         If TABLE specified, only show indices for tables

                         matching LIKE pattern TABLE.

.load FILE ?ENTRY?     Load an extension library

.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout

.mode MODE ?TABLE?     Set output mode where MODE is one of:

                         csv      Comma-separated values

                         column   Left-aligned columns.  (See .width)

                         html     HTML <table> code

                         insert   SQL insert statements for TABLE

                         line     One value per line

                         list     Values delimited by .separator string

                         tabs     Tab-separated values

                         tcl      TCL list elements

.nullvalue STRING      Print STRING in place of NULL values

.output FILENAME       Send output to FILENAME

.output stdout         Send output to the screen

.prompt MAIN CONTINUE  Replace the standard prompts

.quit                  Exit this program

.read FILENAME         Execute SQL in FILENAME

.restore ?DB? FILE     Restore content of DB (default "main") from FILE

.schema ?TABLE?        Show the CREATE statements

                         If TABLE specified, only show tables matching

                         LIKE pattern TABLE.

.separator STRING      Change separator used by output mode and .import

.show                  Show the current values for various settings

.stats ON|OFF          Turn stats on or off

.tables ?TABLE?        List names of tables

                         If TABLE specified, only list tables matching

                         LIKE pattern TABLE.

.timeout MS            Try opening locked tables for MS milliseconds

.width NUM1 NUM2 ...   Set column widths for "column" mode

.timer ON|OFF          Turn the CPU timer measurement on or off

2.代码示例

  (1)创建Android应用程序工程

  (2)创建ElementObject类,定义key-value节点的基本操作
package com.aug.databaseoperate;

public class ElementObject {
private Integer mId;
private String mKey;
private String mValue;

public ElementObject(Integer _id, String _key, String _value) throws Exception{
this.mId = _id;
this.mKey = _key;
this.mValue = _value;
}

public ElementObject addObject(Integer _id, String _key, String _value) throws Exception{
this.mId = _id;
this.mKey = _key;
this.mValue = _value;

return this;
}

public ElementObject getObject(){
return this;
}

public Integer getId(){
return mId;
}

public void setId(Integer _id){
this.mId = _id;
}

public String getKey(){
return mKey;
}

public void setKey(String _key){
this.mKey = _key;
}

public String getValue(){
return mValue;
}

public void setValue(String _value){
this.mValue = _value;
}

@Override
public String toString() {
// TODO Auto-generated method stub
//return super.toString();
return "(" + mId + ", " + mKey + ", " + mValue + ")";
}

}

  (3)创建自定义的DatabaseOpByOpenHelper 继承自SQLiteOpenHelper

/*

 * 该类最主要目的是用来创建一个Database实例,

 * 可以附带创建表及更新表记录

 * */

package com.aug.databaseoperate;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteException;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class DatabaseOpByOpenHelper extends SQLiteOpenHelper {
private static final String TAG = "DatabaseOpByOpenHelper";
private String DATABASE = null;
private int DATABASE_VERSION = 1;
private String DATABASE_TABLE = "";
private String KEY_ID = "";
private String KEY_NAME = "";
private String KEY_VALUE = "";
//private SQLiteDatabase mDb;

public DatabaseOpByOpenHelper(Context _context, String _dbName, int _dbVersion, String _tbName, String _keyID, String _keyName, String _keyValue){
super(_context, _dbName, null, _dbVersion);

Log.d(TAG, "DatabaseOpByOpenHelper construct !");
this.DATABASE = _dbName;
this.DATABASE_VERSION = _dbVersion;
this.DATABASE_TABLE = _tbName;
this.KEY_ID = _keyID;
this.KEY_NAME = _keyName;
this.KEY_VALUE = _keyValue;

Log.d(TAG, "DB:" + DATABASE + " Version:" + DATABASE_VERSION + " TABLE:" + DATABASE_TABLE);
this.getWritableDatabase();//!!!必须get一次打开数据库,否则不会去执行onCreate or onUpgrade
}

public DatabaseOpByOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
Log.d(TAG, "DatabaseOpByOpenHelper");
// TODO Auto-generated constructor stub
}

public void setDbVersion(int _nDbVersion){
Log.d(TAG, "setDbVersion");
SQLiteDatabase db = this.getWritableDatabase();
if (_nDbVersion > db.getVersion()){
this.DATABASE_VERSION = _nDbVersion;
db.setVersion(DATABASE_VERSION);
}
}

public int getDbVersion(){
Log.d(TAG, "getDbVersion");
SQLiteDatabase db = this.getWritableDatabase();
return db.getVersion();
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.d(TAG, "onCreate !");
String sqlClause;
//db = this.getWritableDatabase();
sqlClause = "create table if not exists " + DATABASE_TABLE + " (" + KEY_ID + " integer, " + KEY_NAME +
" text not null primary key, " + KEY_VALUE + " text not null);";
//补充知识点:autoincrement属性 只能为primary key
db.execSQL(sqlClause);
}

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
// TODO Auto-generated method stub
Log.d(TAG, "onUpgrade !");
//对象初始化后数据库版本更新的时候进入的第一个函数
//String sqlClause;
//sqlClause = "drop table if exists " + DATABASE_TABLE + ";";
//实际不应该直接删除,而应该做更新插入,保留已有的数据
//db = this.getWritableDatabase();//error
if (db.getVersion() < this.DATABASE_VERSION){
try{
Log.d(TAG, "Version updated !");
//db.execSQL(sqlClause);
//onCreate(db);
}catch(SQLiteException e){
//Log.d(TAG, "Execute " + sqlClause + " fails !");
}
}
}

/*扩展操作: create view,  create trigger,  create index
* */

}

  (4)创建ElementObjectService类,进行数据库的操作(insert、update、delete、select)

package com.aug.databaseoperate;

import java.util.ArrayList;

import java.util.List;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.util.Log;

public class ElementObjectService {
private static final String TAG = "ElementObjectService";
public static final String DATABASE = "key-value.db";
private static final int DATABASE_VERSION = 2;
public static final String DATABASE_TABLE = "Weather";
public static final String KEY_CITY_ID = "CityID";
public static final String KEY_CITY_NAME = "City";
public static final String KEY_CITY_WEATHER = "Temperature";
private DatabaseOpByOpenHelper mDbOpenHelper;

public ElementObjectService(Context _context){
Log.d(TAG, "ElementObjectService construct !");
mDbOpenHelper = new DatabaseOpByOpenHelper(_context, DATABASE, DATABASE_VERSION, DATABASE_TABLE, KEY_CITY_ID, KEY_CITY_NAME, KEY_CITY_WEATHER);
}

public boolean insert(ElementObject eob){
//插入记录两种方法:(1)sql语句insert (2)通过ContentValues方式insert
String sqlClause;
SQLiteDatabase db;
boolean bResult = true;

if (eob == null || eob.getKey() == null){
Log.d(TAG, "Invalid input params !");
return false;
}

sqlClause = "insert into " + DATABASE_TABLE + "(" + KEY_CITY_NAME + ", " + KEY_CITY_WEATHER + ")"
+ " values(?, ?);";

db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
//db.execSQL(sqlClause, new Object[]{eob.getKey(), eob.getValue()});//方法1
{
ContentValues cv = new ContentValues();
cv.put(KEY_CITY_NAME, eob.getKey());
cv.put(KEY_CITY_WEATHER, eob.getValue());
db.insert(DATABASE_TABLE, null, cv);
}
db.setTransactionSuccessful();
}catch(SQLException e){
Log.d(TAG, "insert fails !");
bResult = false;
}finally{
db.endTransaction();
}

//db.close();
Log.d(TAG, "Execute " + sqlClause + " successfully !");

return bResult;
}

public boolean update(ElementObject eob){
String sqlClause;
SQLiteDatabase db;
boolean bResult = true;

if (eob == null || eob.getKey() == null){
Log.d(TAG, "Invalid input params !");
return false;
}

sqlClause = "update " + DATABASE_TABLE + " set " + KEY_CITY_WEATHER + "=? where " + KEY_CITY_NAME + "=?;";

db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
db.execSQL(sqlClause, new Object[]{eob.getValue(), eob.getKey()});
db.setTransactionSuccessful();
}catch(SQLException e){
Log.d(TAG, "update fails !");
bResult = false;
}finally{
db.endTransaction();
}

//db.close();
Log.d(TAG, "Execute " + sqlClause + " successfully !");
return bResult;
}

//public boolean delete(Integer... ids){
public boolean multiDelete(String... _keys){//此处根据 City来删除, 也可重新定义个接口根据Temperature删除
String sqlClause;
SQLiteDatabase db;
boolean bResult = true;

if (_keys.length > 0){
StringBuffer sb = new StringBuffer();
for (String s : _keys){
sb.append('?').append(',');
}

sb.deleteCharAt(sb.length() - 1);
sqlClause = "delete from " + DATABASE_TABLE + " where " + KEY_CITY_NAME + " in("
+ sb.toString() + ");";

db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
//db.execSQL(sqlClause);
db.execSQL(sqlClause, _keys);
db.setTransactionSuccessful();
}catch(SQLException e){
Log.d(TAG, "delete fails !");
bResult = false;
}finally{
db.endTransaction();
}

//db.close();
Log.d(TAG, "Execute " + sqlClause + " successfully !");
}

return bResult;
}

public boolean delete(String _key, String _value){//根据City或Temperature对应的值来删除
String sqlClause;
SQLiteDatabase db;
boolean bResult = true;

if (_key == null){
Log.d(TAG, "Invalid input params !");
return false;
}

//sqlClause = "delete from " + DATABASE_TABLE + " where " + _key + "=\"" + _value + "\";";
sqlClause = "delete from " + DATABASE_TABLE + " where " + KEY_CITY_NAME + "=?;";
//sqlClause = "delete from " + DATABASE_TABLE + " where ?=?;"; //这种写法存在问题,字段名称不能用通配符,仅字段值可以
Log.d(TAG, "sqlClause:" + sqlClause);
db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
//db.execSQL(sqlClause);
db.execSQL(sqlClause, new Object[]{_value});
db.setTransactionSuccessful();
}catch(SQLException e){
Log.d(TAG, "delete fails !");
bResult = false;
}finally{
db.endTransaction();
}

//db.close();
Log.d(TAG, "Execute " + sqlClause + " successfully !");

return bResult;
}

//public Cursor query(String _keyName, String _keyValue){
public List<ElementObject> query(String _keyName, String _keyValue){//根据天气查询
Cursor cs = null;
String sqlClause;
SQLiteDatabase db;
ElementObject eob = null;
List<ElementObject> lEobs = new ArrayList<ElementObject>();

if (_keyName == null){
Log.d(TAG, "Invalid input params !");
return null;
}

//sqlClause = "select * from " + DATABASE_TABLE + " where ?=\"?\";";//error
sqlClause = "select * from " + DATABASE_TABLE + " where " + KEY_CITY_WEATHER + "=?;";
db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
cs = db.rawQuery(sqlClause, new String[]{/*_keyName, */_keyValue});
db.setTransactionSuccessful();
while(cs.moveToNext()){
Log.d(TAG, "(" + cs.getInt(0) + "," + cs.getString(1) + "," + cs.getString(2) + ")");
try {
lEobs.add(new ElementObject(cs.getInt(0), cs.getString(1), cs.getString(2)));
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d(TAG, "add obj fails !");
lEobs = null;
e.printStackTrace();
}
}
}catch(SQLException e){
Log.d(TAG, "query fails !");
}finally{
db.endTransaction();
}

return lEobs;
}

public long getRecordsCount(){
long lRecordsNum = 0;
String sqlClause;
SQLiteDatabase db;
Cursor cs = null;

sqlClause = "select count(*) from " + DATABASE_TABLE + ";";

db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
cs = db.rawQuery(sqlClause, null);
db.setTransactionSuccessful();
}catch(SQLException e){
Log.d(TAG, "select fails !");
}finally{
db.endTransaction();
}

//db.close();

if (cs.moveToNext()){
lRecordsNum = cs.getLong(0);
}
Log.d(TAG, "Execute " + sqlClause + " successfully !");

return lRecordsNum;
}

public List<ElementObject> getAllRecords(){
List<ElementObject> lEobs = new ArrayList<ElementObject>();
String sqlClause = null;
SQLiteDatabase db = null;
Cursor cs = null;

sqlClause = "select * from " + DATABASE_TABLE + ";";
db = mDbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
cs = db.rawQuery(sqlClause, null);
db.setTransactionSuccessful();
while (cs.moveToNext()){
try {
lEobs.add(new ElementObject((Integer)cs.getInt(0), cs.getString(1), cs.getString(2)));
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d(TAG, "add obj fails !");
lEobs = null;
e.printStackTrace();
}
}
}catch(SQLException e){
Log.d(TAG, "select s fails !");
lEobs = null;
}finally{
db.endTransaction();
}

return lEobs;
}

}

  (5)创建ElementObjectServiceTest类,继承自AndroidTestCase,进行单元测试

package com.aug.databaseoperate;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.test.AndroidTestCase;

import android.util.Log;

public class ElementObjectServiceTest extends AndroidTestCase {
private static final String TAG = "ElementObjectServiceTest";
private ElementObjectService mEobs;

public ElementObjectServiceTest(){
//mEobs = new ElementObjectService(_context);
}

public ElementObjectServiceTest(Context _context){
//mEobs = new ElementObjectService(_context);
}

public void testInsert() throws Exception{
ElementObjectService mEobs = new ElementObjectService(this.getContext());
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
lstEobs.add(new ElementObject(0, "jingzhou", "5"));
lstEobs.add(new ElementObject(0, "wuhan", "6"));
lstEobs.add(new ElementObject(0, "changsha", "7"));
lstEobs.add(new ElementObject(0, "yueyang", "5"));
lstEobs.add(new ElementObject(0, "shenzhen", "6"));
lstEobs.add(new ElementObject(0, "guangzhou", "7"));
lstEobs.add(new ElementObject(0, "kunming", "5"));

for (int i = 0; i < lstEobs.size(); i++){
mEobs.insert(lstEobs.get(i));
}
}

public void testUpdate() throws Exception{
ElementObjectService mEobs = new ElementObjectService(this.getContext());
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
lstEobs.add(new ElementObject(0, "jingzhou", "25"));
lstEobs.add(new ElementObject(0, "wuhan", "26"));
lstEobs.add(new ElementObject(0, "changsha", "27"));
lstEobs.add(new ElementObject(0, "yueyang", "25"));
lstEobs.add(new ElementObject(0, "shenzhen", "26"));
lstEobs.add(new ElementObject(0, "guangzhou", "27"));
lstEobs.add(new ElementObject(0, "kunming", "25"));

for (int i = 0; i < lstEobs.size(); i++){
mEobs.update(lstEobs.get(i));
}
}

public void testDelete() throws Exception{
String sKeyName = ElementObjectService.KEY_CITY_NAME;
String sKeyValue = "changsha";
ElementObjectService mEobs = new ElementObjectService(this.getContext());

mEobs.delete(sKeyName, sKeyValue);
}

public void testMultiDelete() throws Exception{
String[] aCity = new String[3];
aCity[0] = "jingzhou";
aCity[1] = "yueyang";
aCity[2] = "kunming";
//String[] aCity = {"jingzhou", "yueyang"};

ElementObjectService mEobs = new ElementObjectService(this.getContext());
mEobs.multiDelete(aCity[0], aCity[1], aCity[2]);
}

public void testQuery() throws Exception{
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
ElementObjectService mEobs = new ElementObjectService(this.getContext());
String sKeyName = ElementObjectService.KEY_CITY_WEATHER;
String sKeyValue = "25";
lstEobs = mEobs.query(sKeyName, sKeyValue);

for (int i = 0; i < lstEobs.size(); i++){
lstEobs.get(i).toString();
}
}

public void testGetRecordsCount() throws Exception{
ElementObjectService mEobs = new ElementObjectService(this.getContext());
Log.d(TAG, "Total Records Num:" + mEobs.getRecordsCount());
}

public void testGetAllRecords() throws Exception{
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
ElementObjectService mEobs = new ElementObjectService(this.getContext());

lstEobs = mEobs.getAllRecords();
for (int i = 0; i < lstEobs.size(); i++){
lstEobs.get(i).toString();
}
}

}

需要修改AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.aug.databaseoperate"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="16" />

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <uses-library android:name="android.test.runner"/>

        <activity

            android:name="com.aug.databaseoperate.DatabaseOpMainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

    <instrumentation android:name="android.test.InstrumentationTestRunner"     

        android:targetPackage="com.aug.databaseoperate" 

        android:label="Tests for My App" />

</manifest>

  (6)修改应用程序界面,使用ElementObjectServiceTest方法进行数据库操作,并显示数据库的记录变化

package com.aug.databaseoperate;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class DatabaseOpMainActivity extends Activity implements View.OnClickListener {

private static final String TAG = "DatabaseOpMainActivity";
//private static final String DATABASE_NAME = "test4.db";
//private static int DATABASE_VERSION = 1;
//private static Context mContext;
//DatabaseOperate dbOp;

private TextView mTxtVRecords;
private Button btnInsert;
private Button btnUpdate;
private Button btnDelete;
private Button btnMultiDelete;
private Button btnGetCount;
private Button btnQuery;
private Button btnGetAllRecords;

private static final int BTN_INSERT = 1;
private static final int BTN_UPDATE = 2;
private static final int BTN_DELETE = 3;
private static final int BTN_MULTI_DELETE = 4;
private static final int BTN_QUERY = 5;
private static final int BTN_RECORDS_COUNT = 6;
private static final int BTN_GET_ALL_RECORDS = 7;

private ElementObjectServiceTest mEobst;
private ElementObjectService mEobs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weather_db);

Log.d(TAG, "onCreate !");
/*dbOp = new DatabaseOperate(this, DATABASE_NAME, null, DATABASE_VERSION);
dbOp.setTableName("User");
dbOp.setKeyName("name");
dbOp.setKeyValue("sex");
dbOp.open();

dbOp.createNewTable("User", "ID", "name", "sex");
dbOp.insertRecordToDbTb("User", 1, "张三", "男");
dbOp.insertRecordToDbTb("User", 0, "lisi", "女");
dbOp.insertRecordToDbTb("User", 0, "张三", "女");

dbOp.createNewTable("Weather", "City_ID", "City_Name", "City_Temperature");
dbOp.insertRecordToDbTb("Weather", 1001, "上海", "70");
dbOp.insertRecordToDbTb("Weather", 1002, "深圳", "100");

Log.d(TAG, "The version of " + DATABASE_NAME + " is " + dbOp.getDbVersion());
dbOp.queryRecords("User", "name", "张三");*/

mTxtVRecords = (TextView)findViewById(R.id.txtVRecords);
btnInsert = (Button)findViewById(R.id.btnInsert);
btnUpdate = (Button)findViewById(R.id.btnUpdate);
btnDelete = (Button)findViewById(R.id.btnDelete);
btnMultiDelete = (Button)findViewById(R.id.btnMultiDelete);
btnQuery = (Button)findViewById(R.id.btnQuery);
btnGetCount = (Button)findViewById(R.id.btnCount);
btnGetAllRecords = (Button)findViewById(R.id.btnGetAllRecords);

//btnInsert.setOnClickListener((OnClickListener) this); //如果主类不implements View.OnClickListener,则要强制转换
btnInsert.setOnClickListener(this);
btnInsert.setTag(BTN_INSERT);
btnUpdate.setOnClickListener(this);
btnUpdate.setTag(BTN_UPDATE);
btnDelete.setOnClickListener(this);
btnDelete.setTag(BTN_DELETE);
btnMultiDelete.setOnClickListener(this);
btnMultiDelete.setTag(BTN_MULTI_DELETE);
btnQuery.setOnClickListener(this);
btnQuery.setTag(BTN_QUERY);
btnGetCount.setOnClickListener(this);
btnGetCount.setTag(BTN_RECORDS_COUNT);
btnGetAllRecords.setOnClickListener(this);
btnGetAllRecords.setTag(BTN_GET_ALL_RECORDS);

mEobs = new ElementObjectService(this);
mEobst = new ElementObjectServiceTest(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_database_op_main, menu);
return true;
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int tag = (Integer)v.getTag();

try{
switch(tag){
case BTN_INSERT:
mEobst.testInsert();
//testInsert();
break;
case BTN_UPDATE:
mEobst.testUpdate();
break;
case BTN_DELETE:
mEobst.testDelete();
break;
case BTN_MULTI_DELETE:
mEobst.testMultiDelete();
break;
case BTN_QUERY:
mEobst.testQuery();
break;
case BTN_RECORDS_COUNT:
mEobst.testGetRecordsCount();
break;
case BTN_GET_ALL_RECORDS:
mEobst.testGetAllRecords();
break;
default:
break;
}
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
lstEobs = mEobs.getAllRecords();
String sRecords = "";
for (int i = 0; i < lstEobs.size(); i++){
sRecords += lstEobs.get(i).toString();
sRecords += '\n';
}
mTxtVRecords.setText("");
mTxtVRecords.setText(sRecords);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
Log.d(TAG, "onDestroy");
/*dbOp.dropTable("User");
Log.d(TAG, "table User" + " is deleted !");
dbOp.close();
//dbOp.dropDatabase(DATABASE_NAME);
Log.d(TAG, DATABASE_NAME + " is deleted !");*/
super.onDestroy();
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
//dbOp.close();
super.onPause();
}

@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}

public void testInsert() throws Exception{
List<ElementObject> lstEobs = new ArrayList<ElementObject>();
lstEobs.add(new ElementObject(0, "jingzhou", "5"));
lstEobs.add(new ElementObject(0, "wuhan", "6"));
lstEobs.add(new ElementObject(0, "changsha", "7"));
lstEobs.add(new ElementObject(0, "yueyang", "5"));
lstEobs.add(new ElementObject(0, "shenzhen", "6"));
lstEobs.add(new ElementObject(0, "guangzhou", "7"));
lstEobs.add(new ElementObject(0, "kunming", "5"));

for (int i = 0; i < lstEobs.size(); i++){
mEobs.insert(lstEobs.get(i));
}
}

}

  (7)布局文件

     <?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" >

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent" >

        <Button

            android:id="@+id/btnQuery"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_alignRight="@+id/btnMultiDelete"

            android:layout_below="@+id/btnMultiDelete"

            android:text="Query" />

        <Button

            android:id="@+id/btnCount"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_alignRight="@+id/btnQuery"

            android:layout_below="@+id/btnQuery"

            android:text="Count" />

        <Button

            android:id="@+id/btnMultiDelete"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_below="@+id/btnDelete"

            android:text="MDelete" />

        <Button

            android:id="@+id/btnDelete"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_alignRight="@+id/btnUpdate"

            android:layout_below="@+id/btnUpdate"

            android:text="Delete" />

        <TextView

            android:id="@+id/txtVRecords"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignBottom="@+id/btnQuery"

            android:layout_alignParentRight="true"

            android:layout_alignParentTop="true"

            android:layout_marginLeft="15dp"

            android:layout_toRightOf="@+id/btnInsert"

            android:text="show records existed" />

        <Button

            android:id="@+id/btnInsert"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_alignParentTop="true"

            android:layout_alignRight="@+id/btnMultiDelete"

            android:text="Insert" />

        <Button

            android:id="@+id/btnUpdate"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_below="@+id/btnInsert"

            android:layout_toLeftOf="@+id/txtVRecords"

            android:text="Update" />

        <Button

            android:id="@+id/btnGetAllRecords"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignBaseline="@+id/btnCount"

            android:layout_alignBottom="@+id/btnCount"

            android:layout_alignLeft="@+id/txtVRecords"

            android:layout_marginLeft="35dp"

            android:text="Records" />

    </RelativeLayout>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐