又来帖代码啦,这段时间和几个人一起搞伙食,所以自己做了android的小应用来记账
看看每个人欠多少和支出多少。界面太丑,就不拿出来看了,今天来记录下SQLite的使用方法
首先,要用这东西必须要有一定的sql语句的基础,我想这么基本的东西大家都会的。下面来看看怎样用Android自带的轻量级数据库SQLite
具体步骤是:
1.定义一个助手类来初始化你想要建的表
2.从这个助手类中获得可读数据库对象或者可写数据库对象
3.用这个数据库对象进行相应的操作,可读的当然就是查询语句啦,可写的话就是增删改
听起来似乎有点简单,的确也不难。来帖个代码。
我的SqlHelper:
package com.freeborders.alfred;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SqlHelper extends SQLiteOpenHelper {
static final String sql = "create table " + Final.TBNAME + " (name varchar(10),pay varchar(5),owe varchar(5))";
public SqlHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
//创建数据库的时候会做的事情放到这里,我这里就是简单的给这张Final.TBNAME初始化
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//执行sql这个sql语句,它是创建一个新表
db.execSQL(sql);
//后面是给这个新表插入数据
ContentValues values = new ContentValues();
values.put("name", "Alfred");
values.put("pay", "0");
values.put("owe", "0");
db.insert("accountbook", null, values);
values.put("name", "Milo");
values.put("pay", "0");
values.put("owe", "0");
db.insert("accountbook", null, values);
values.put("name", "Winson");
values.put("pay", "0");
values.put("owe", "0");
db.insert("accountbook", null, values);
values.put("name", "Sai");
values.put("pay", "0");
values.put("owe", "0");
db.insert("accountbook", null, values);
values.put("name", "June");
values.put("pay", "0");
values.put("owe", "0");
db.insert("accountbook", null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
其实这个Helper里面已经包括了插入数据了
再来看看再主函数如何访问数据库:
//连接数据库的函数,该函数遍历了数据库中名叫Final.TBNAME的表,并相应地赋值到对应的数组中
//这里用到了游标
private void connectDatabase() {
// TODO Auto-generated method stub
SqlHelper sqlHelper = new SqlHelper(MyAccountingActivity.this,Final.DBNAME , null, 1);
//只读数据库对象private SQLiteDatabase dbRead;
dbRead = sqlHelper.getReadableDatabase();
//只写数据库对象private SQLiteDatabase dbWrite;
dbWrite = sqlHelper.getWritableDatabase();
int i = 0;
Cursor cur = dbRead.query(Final.TBNAME, new String[]{"pay","owe"}, null , null, null, null, null);
while(cur!=null && cur.moveToNext() && i<Final.NUMBER){
pays[i] = cur.getString(cur.getColumnIndex("pay"));
sum+=Float.parseFloat(pays[i]);
owes[i++] = cur.getString(cur.getColumnIndex("owe"));
}
}
注意dbRead.query是查询函数,其实就是select 语句
select pay,owe from Final.TBNAME;后面的null,null,null...其实就是select 语句后面的where 子句啊排序啊什么的。查查api都懂了
这里就不多说了