一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XML使用方便,那么这些都是简单的数据存储功能,在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Access数据库,但是他有比Access更好的平台支持,并且支持分页,现在主要是用于嵌入式的开发。

在开发过程中其实可以直接声明数据库对象来进行存储管理的,代码如下:

SQLiteDatabase sqlitedb;//数据库对象
sqlitedb=this.openOrCreateDatabase(datebaseName, MODE_PRIVATE,null);

//执行代码:
SqlString="create table"+tableName
+"(_id integer primary key,num integer,data text)";
sqlitedb.execSQL(SqlString);

 这种方式需要我们处理的内容更多一些,个人感觉不是太方便,就像我们开发C#的程序使用SqlHelper一样,在Android平台中也提供了一个类似的类:

 

SQLiteOpenHelper 这样类

我们可以通过实现这个类来完成我们的操作,这样更简单和高效:

代码如下:

 

importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;

publicclassDBHelperextendsSQLiteOpenHelper {

privatestaticfinalintDB_VERSION=1;

publicDBHelper(Context context, String name, CursorFactory factory,
intversion) {
super(context, name, factory, version);
//TODO Auto-generated constructor stub
}

publicDBHelper(Context context, String dBName) {
super(context, dBName,null, DB_VERSION);
}

@Override
publicvoidonCreate(SQLiteDatabase db) {
//TODO Auto-generated method stub

}

publicvoidonCreate(SQLiteDatabase db, String createDBSql) {
//TODO Auto-generated method stub
db.execSQL(createDBSql);
}

@Override
publicvoidonUpgrade(SQLiteDatabase db,intoldVersion,intnewVersion) {
//TODO Auto-generated method stub

}

@Override
publicvoidonOpen(SQLiteDatabase db) {
//TODO Auto-generated method stub
super.onOpen(db);
}

publicvoidInsertintoDB(SQLiteDatabase db,String sql)
{
db.execSQL(sql);
}
publicCursor opendb(SQLiteDatabase db,String sql) {
returndb.rawQuery(sql,null);
}
}

 在这里只做了一个简单的写作,没有写太多方法这个只是一个引导,可以对这个类进行扩展,这样使用起来更方便一些。 

下面是一个简单的调用:

 

//声明
SQLiteDatabase db=null;

DBHelper dbhelper
=null;

//实例化
dbhelper=newDBHelper(this,"DBName");

//方法
voidCreateTable() {

String sql
="Create Table if not exists"+TABLE_NAME+"("+ID
+"text not null ,"+NAME+"text not null );";
dbhelper.onCreate(db, sql);

}

voidInsertDB(String id, String name) {
db
=dbhelper.getWritableDatabase();
String sql
="insert into"+TABLE_NAME+"("+ID+","+NAME
+") values('"+id+"','"+name+"')";
dbhelper.InsertintoDB(db, sql);
}

voidgetDB() {
db
=dbhelper.getReadableDatabase();
String sql
="select * from"+TABLE_NAME;
Cursor cursor
=dbhelper.opendb(db, sql);
String text
="";
while(cursor.moveToNext()) {
for(inti=0; i<cursor.getColumnCount(); i++) {
text
+=cursor.getString(i);
}
text
+="\n";
}
Toast
.makeText(
this, cursor.getCount()+"\n"+text,
Toast.LENGTH_LONG).show();
}
最后修改:2011 年 07 月 09 日
卧槽,全是白嫖客,服务器不要钱吗?