android中的sqlit3数据库进行手机应用软件开发(自写的一个财务管理软件,这里主要讲收入录入模块)
2013-05-30 16:02
627 查看
1.设计好数据库的表结构,用android提供的SQLiteOpenHelper接口来实现数据库的创建
。。。。
public class DBOpenHelper extends SQLiteOpenHelper{
private static final int VERSION = 1;
private static final String DBNAME ="account.db";
public DBOpenHelper(Context context){ //定义构造函数
super(context,DBNAME,null,VERSION);
//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO 自动生成的方法存根
db.execSQL("create table tb_outacount(_id integer primary key,money decimal,time varchar(10),"+
"type varchar(10),address varchar(100),mark varchar(2000))");
db.execSQL("create table tb_inacount(_id integer primary key,money decimal,time varchar(10),"+
"type varchar(10),handler varchar(100),mark varchar(200))");
db.execSQL("create table tb_pwd(password varchar(20))");
db.execSQL("create table tb_flag(_id integer primary key,flag varchar(200))");
}
。。。。。。
2.根据tb_inacount 表结构(收入信息录入表),创建这个数据库表操作(增,删,改,查)公共类,写在****.***.DAO这个包下面
public class InacountDAO {
private DBOpenHelper helper;
private SQLiteDatabase db;
public InacountDAO(Context context){
helper = new DBOpenHelper(context);
}
/**
* 添加收入记录
*/
public void add(Tb_inacount tb_inacount){
db = helper.getWritableDatabase();
db.execSQL("insert into tb_inacount(_id,money,time,type,handler,mark) values (?,?,?,?,?,?)",
new Object[]{tb_inacount.get_id(),tb_inacount.getMoney(),tb_inacount.getTime(),tb_inacount.getType(),
tb_inacount.getHandle(),tb_inacount.getMark()});
}
/**
* 修改收入记录
* @param tb_inacount
*/
public void update(Tb_inacount tb_inacount){
db = helper.getWritableDatabase();
db.execSQL("update tb_inacount set money=?,time =?,type=?,handler=?,mark=? where _id=?",
new Object[]{tb_inacount.getMoney(),tb_inacount.getTime(),tb_inacount.getType(),
tb_inacount.getHandle(),tb_inacount.getMark(),tb_inacount.get_id()});
}
/**
* 返回结果集
* @param id
* @return
*/
public Tb_inacount find(int id){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from tb_inacount where _id=?", new String[]{String.valueOf(id)});
if(cursor.moveToNext()){
return new Tb_inacount(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getDouble(cursor.getColumnIndex("money")),
cursor.getString(cursor.getColumnIndex("time")),cursor.getString(cursor.getColumnIndex("type")),
cursor.getString(cursor.getColumnIndex("handler")),cursor.getString(cursor.getColumnIndex("mark")));
}else{
return null;
}
}
/**
* 删除一系列不选定的id
* @param ids
*/
public void delete(Integer... ids){
if(ids.length > 0){
StringBuffer sb = new StringBuffer();
for(int i=0;i<ids.length;i++){
sb.append('?').append(',');
}
sb.deleteCharAt(sb.length() - 1);
db = helper.getWritableDatabase();
db.execSQL("delete from tb_inacount where _id in("+sb+")",(Object[])ids);
}
}
/**
* 返回Cursor 对象 供ListView SimpleCursorAdapter使用
* @return
*/
public Cursor getInAllDataCursor(){
db = helper.getWritableDatabase();
return db.rawQuery("select * from tb_inacount", null);
}
/**
* 分页显示收入结果集
* @param start 开始的位置
* @param count 一页显示几条
* @return
*/
public List<Tb_inacount> getScrolData(int start,int count){
List<Tb_inacount> tb_inacount = new ArrayList<Tb_inacount>();
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from tb_inacount limit ?,?",
new String[]{String.valueOf(start),String.valueOf(count)});
while(cursor.moveToNext()){
tb_inacount.add(new Tb_inacount(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getDouble(cursor.getColumnIndex("money")),
cursor.getString(cursor.getColumnIndex("time")),cursor.getString(cursor.getColumnIndex("type")),
cursor.getString(cursor.getColumnIndex("handler")),cursor.getString(cursor.getColumnIndex("mark"))));
}
return tb_inacount;
}
/**
* 返回当前结果集条数
* @return
*/
public long getCount(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select count(_id) from tb_inacount",null);
if(cursor.moveToNext()){
return cursor.getLong(0);
}else{
return 0;
}
}
/**
* 获取当前数据表中最大的ID
* @return
*/
public int getMaxId(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select max(_id) from tb_inacount", null);
if(cursor.moveToNext()){
return cursor.getInt(0);
}else{
return 0;
}
}
public Double getInSum(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select sum(money) from tb_inacount", null);
if(cursor.moveToNext()){
return cursor.getDouble(0);
}else{
return 0.0;
}
}
}
3. activity获取数据后,调用该方法对数据库进行操作
//数据库操申明对象
private Tb_inacount tb_inacount;
private InacountDAO inacountDAO;
// 为数据库操作申明对象
tb_inacount = new Tb_inacount(); //初始化
inacountDAO = new InacountDAO(AddinacountActivity.this);
获取数据并进行数据库操作
。。。。。
tb_inacount.set_id(inacountDAO.getMaxId()+1);
tb_inacount.setMoney(Double.parseDouble(money.getText().toString()));
tb_inacount.setTime(time.getText().toString());
tb_inacount.setType(type.getSelectedItem().toString());
tb_inacount.setHandle(handle.getText().toString());
tb_inacount.setMark(beizhu.getText().toString());
inacountDAO.add(tb_inacount);
new AlertDialog.Builder(AddinacountActivity.this).setTitle("系统信息")
.setMessage("增添收入成功,是否继续添加?")
.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO 自动生成的方法存根
money.setText("");
time.setText("");
handle.setText("");
beizhu.setText("");
type.setSelection(0);
return ;
}
}).setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO 自动生成的方法存根
Intent intent = new Intent(AddinacountActivity.this,FunctionActivity.class);
startActivity(intent);
finish();
}
}).show();
。。。。。。。
。。。。
public class DBOpenHelper extends SQLiteOpenHelper{
private static final int VERSION = 1;
private static final String DBNAME ="account.db";
public DBOpenHelper(Context context){ //定义构造函数
super(context,DBNAME,null,VERSION);
//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO 自动生成的方法存根
db.execSQL("create table tb_outacount(_id integer primary key,money decimal,time varchar(10),"+
"type varchar(10),address varchar(100),mark varchar(2000))");
db.execSQL("create table tb_inacount(_id integer primary key,money decimal,time varchar(10),"+
"type varchar(10),handler varchar(100),mark varchar(200))");
db.execSQL("create table tb_pwd(password varchar(20))");
db.execSQL("create table tb_flag(_id integer primary key,flag varchar(200))");
}
。。。。。。
2.根据tb_inacount 表结构(收入信息录入表),创建这个数据库表操作(增,删,改,查)公共类,写在****.***.DAO这个包下面
public class InacountDAO {
private DBOpenHelper helper;
private SQLiteDatabase db;
public InacountDAO(Context context){
helper = new DBOpenHelper(context);
}
/**
* 添加收入记录
*/
public void add(Tb_inacount tb_inacount){
db = helper.getWritableDatabase();
db.execSQL("insert into tb_inacount(_id,money,time,type,handler,mark) values (?,?,?,?,?,?)",
new Object[]{tb_inacount.get_id(),tb_inacount.getMoney(),tb_inacount.getTime(),tb_inacount.getType(),
tb_inacount.getHandle(),tb_inacount.getMark()});
}
/**
* 修改收入记录
* @param tb_inacount
*/
public void update(Tb_inacount tb_inacount){
db = helper.getWritableDatabase();
db.execSQL("update tb_inacount set money=?,time =?,type=?,handler=?,mark=? where _id=?",
new Object[]{tb_inacount.getMoney(),tb_inacount.getTime(),tb_inacount.getType(),
tb_inacount.getHandle(),tb_inacount.getMark(),tb_inacount.get_id()});
}
/**
* 返回结果集
* @param id
* @return
*/
public Tb_inacount find(int id){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from tb_inacount where _id=?", new String[]{String.valueOf(id)});
if(cursor.moveToNext()){
return new Tb_inacount(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getDouble(cursor.getColumnIndex("money")),
cursor.getString(cursor.getColumnIndex("time")),cursor.getString(cursor.getColumnIndex("type")),
cursor.getString(cursor.getColumnIndex("handler")),cursor.getString(cursor.getColumnIndex("mark")));
}else{
return null;
}
}
/**
* 删除一系列不选定的id
* @param ids
*/
public void delete(Integer... ids){
if(ids.length > 0){
StringBuffer sb = new StringBuffer();
for(int i=0;i<ids.length;i++){
sb.append('?').append(',');
}
sb.deleteCharAt(sb.length() - 1);
db = helper.getWritableDatabase();
db.execSQL("delete from tb_inacount where _id in("+sb+")",(Object[])ids);
}
}
/**
* 返回Cursor 对象 供ListView SimpleCursorAdapter使用
* @return
*/
public Cursor getInAllDataCursor(){
db = helper.getWritableDatabase();
return db.rawQuery("select * from tb_inacount", null);
}
/**
* 分页显示收入结果集
* @param start 开始的位置
* @param count 一页显示几条
* @return
*/
public List<Tb_inacount> getScrolData(int start,int count){
List<Tb_inacount> tb_inacount = new ArrayList<Tb_inacount>();
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from tb_inacount limit ?,?",
new String[]{String.valueOf(start),String.valueOf(count)});
while(cursor.moveToNext()){
tb_inacount.add(new Tb_inacount(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getDouble(cursor.getColumnIndex("money")),
cursor.getString(cursor.getColumnIndex("time")),cursor.getString(cursor.getColumnIndex("type")),
cursor.getString(cursor.getColumnIndex("handler")),cursor.getString(cursor.getColumnIndex("mark"))));
}
return tb_inacount;
}
/**
* 返回当前结果集条数
* @return
*/
public long getCount(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select count(_id) from tb_inacount",null);
if(cursor.moveToNext()){
return cursor.getLong(0);
}else{
return 0;
}
}
/**
* 获取当前数据表中最大的ID
* @return
*/
public int getMaxId(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select max(_id) from tb_inacount", null);
if(cursor.moveToNext()){
return cursor.getInt(0);
}else{
return 0;
}
}
public Double getInSum(){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select sum(money) from tb_inacount", null);
if(cursor.moveToNext()){
return cursor.getDouble(0);
}else{
return 0.0;
}
}
}
3. activity获取数据后,调用该方法对数据库进行操作
//数据库操申明对象
private Tb_inacount tb_inacount;
private InacountDAO inacountDAO;
// 为数据库操作申明对象
tb_inacount = new Tb_inacount(); //初始化
inacountDAO = new InacountDAO(AddinacountActivity.this);
获取数据并进行数据库操作
。。。。。
tb_inacount.set_id(inacountDAO.getMaxId()+1);
tb_inacount.setMoney(Double.parseDouble(money.getText().toString()));
tb_inacount.setTime(time.getText().toString());
tb_inacount.setType(type.getSelectedItem().toString());
tb_inacount.setHandle(handle.getText().toString());
tb_inacount.setMark(beizhu.getText().toString());
inacountDAO.add(tb_inacount);
new AlertDialog.Builder(AddinacountActivity.this).setTitle("系统信息")
.setMessage("增添收入成功,是否继续添加?")
.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO 自动生成的方法存根
money.setText("");
time.setText("");
handle.setText("");
beizhu.setText("");
type.setSelection(0);
return ;
}
}).setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO 自动生成的方法存根
Intent intent = new Intent(AddinacountActivity.this,FunctionActivity.class);
startActivity(intent);
finish();
}
}).show();
。。。。。。。
相关文章推荐
- 使用.net开发手机管理软件 (六) OBEX应用——文件传输部分
- 这段时间开发了一个共享软件,主要做IP资源管理的(SmartIPView),大家有兴趣可以看看,或给指点指点
- Android开发,在一个项目中调用(启用)已经安装的第三方apk应用软件
- 第一次安装android sdk后进行开发包的更新,你应该了解到需要的时间会很长,那么是否有办法提升安装的进度呢?办法自然是有的,这里提供一个取巧的方法,不会太麻烦,又能加快android开发环境的部
- android开发进行自动更新时怎么下载软件到手机内存,显示实现下载到SD卡了
- 我将用一个月学会android并开发一个应用,这篇主要用来记录自己的学习历程
- web 开发一个能进行人员管理(查询,删除,添加)的应用
- 索爱针对Android平台推出WebSDK, 主要是为其Android手机开发应用。
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)
- .net平台手机管理软件开发(6)OBEX应用——文件传输部分
- 用C语言开发一个BT下载软件 (四) ------ 代码实现-5-Peer管理模块
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)
- phonegap 开发入门 PhoneGap官方网站上有详细的入门示例教程,这里,我针对使用PhoneGap进行Android移动应用的开发对其官网的Get Started进行一些介绍、补充。 Ste
- 为什么Android应用用Java开发,为什么Android大型游戏要用数据包?这里根据我的知识做一个总结
- 如何在iOS和Android上选择一个JavaScript 引擎进行应用开发
- 用C语言开发一个BT下载软件 (四) ------ 代码实现-2-位图管理模块的代码实现
- 手机应用软件开发-高通骁龙615与麒麟925 CPU比较-华为Mate 7 金色高配版
- 如何在Eclipse开发环境进行android应用调试
- Ubuntu14.04下Android系统与应用开发软件完整apt-get 源。
- Android开发中一个简单实用的调试应用技巧分享