MyException - 我的异常网
当前位置:我的异常网» 数据库 » 对于写好的数据库框架个人化修改及数据库框架资源

对于写好的数据库框架个人化修改及数据库框架资源

www.MyException.Cn  网友分享于:2013-10-08  浏览:0次
对于写好的数据库框架个性化修改及数据库框架资源

                上一次课已经讲过了如何使用我们手中现有的数据库模板,那么如今我们就来定制个性化的数据库模板,首先需要对SQLiteClientDaoHelper这个类做个了解,如此我们才可以为所欲为改动。

 

package com.example.dao;


import java.util.List;

import com.example.bean.User;
import com.example.core.SQLiteClientDaoHelper;
import com.example.core.SQLiteClientDaoHelper.BuildData;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;

public class UserDao {
	
	//由于需要对数据库进行管理我们将SQLiteClientDaoHelper对象定义好
	private SQLiteClientDaoHelper helper;
	
	public UserDao(Context context) {
		helper = SQLiteClientDaoHelper.getInstance(context);
	}
	/*
	 * 之所以定义list接受user是因为组织id是有一样的,有很多用户属于同一个组织,这时候只返回User类显然不合适,所以
	 * 采用List接受多个User类。
	 */
	
	public List<User> getUsers(long orgId) {
		return helper.getAll("SELECT userId, userName, phoneNumber1, phoneNumber2, shortNumber1, shortNumber2, orgId FROM user WHERE orgId = ? ORDER BY shortNumber1", 
				new String[] { String.valueOf(orgId) }, new BuildData<User>() {

			@Override
			//通过orgid这里定义的是组织id,来找到cursor大家可以把它看成游标,定义到此id的user那一行
			public User onBuildData(Cursor cursor) {
				User user = new User();
				/*
				 * 定义到那一行以后,根据我们写好的数据库知道第一个是Id,第二个是名字,类似这样获取,返回。
				 */
				user.setUserId(cursor.getString(0));
				user.setUserName(cursor.getString(1));
				user.setPhoneNumber1(cursor.getString(2));
				user.setPhoneNumber2(cursor.getString(3));
				user.setShortNumber1(cursor.getString(4));
				user.setShortNumber2(cursor.getString(5));
				user.setOrgId(cursor.getInt(6));
				return user;
			}
			
		});
	}
	
	
	
	/*
	 * 更新数据库表格,根据我们定义的元素使用ContentValues values = new ContentValues();进行元素更新。
	 */
	public void updateUser(User user){
		ContentValues values = new ContentValues();
		values.put("userId", user.getUserId());
		values.put("userName", user.getUserName());
		values.put("phoneNumber1", user.getPhoneNumber1());
		values.put("phoneNumber2", user.getPhoneNumber2());
		values.put("shortNumber1", user.getShortNumber1());
		values.put("shortNumber2", user.getShortNumber2());
		values.put("orgId", user.getOrgId());
		
		if(isExistsUser(user.getUserId())) {
			helper.update("user", values, "userId=?", new String[] { user.getUserId() });
		} else {
			helper.insert("user", values);
		}
	}
	
	public void deleteUser(String userid){
		
		helper.delete("user", "userId = ?", new String[] { userid });
	}
	
	public boolean isExistsUser(String stationId) {
		Boolean result = helper.get("SELECT count(1) as counts FROM user WHERE userId = ?", 
		new String[] { stationId }, new BuildData<Boolean>() {

			@Override
			public Boolean onBuildData(Cursor cursor) {
				return cursor.getInt(0) > 0;
			}
			
		});
		
		return result != null && result;
	}
	
}

 

 改装的主要过程是在这里

改装按照模板来,基本上我们只需要变几个参数就可以了

比如:

public List<User> getUsers(long orgId) 

 

 这里面我们可以看到方法是得到所有的用户类,但是有的时候我们只需要得到一个用户,利用电话号码作为标识这时候怎么改?很简单,看看原来类似方法开始改

复制粘贴这方法整体。

然后查找SQLiteClientDaoHelper定义的获取为个体用户的方法

原先的方法是getAll,显然不适合。

public <E> E get(String table, String[] columns, String selection,
            String[] selectionArgs, String orderBy, BuildData<E> buildData) {
		return get(table, columns, selection, selectionArgs, null, null, orderBy, buildData);
	}

 找到了这里获取到范类,也就是任何类都适用,显然对于我们User用户类也是适用的。

于是我们改好的方法如下:

public User getUser(String phone) {
		return helper.get("SELECT userId, userName, phoneNumber1, phoneNumber2, "
				+ "shortNumber1, shortNumber2, orgId FROM user WHERE phoneNumber1 = ? ", 
				new String[] {phone}, new BuildData<User>() {

			@Override
			//通过orgid这里定义的是组织id,来找到cursor大家可以把它看成游标,定义到此id的user那一行
			public User onBuildData(Cursor cursor) {
				User user = new User();
				/*
				 * 定义到那一行以后,根据我们写好的数据库知道第一个是Id,第二个是名字,类似这样获取,返回。
				 */
				user.setUserId(cursor.getString(0));
				user.setUserName(cursor.getString(1));
				user.setPhoneNumber1(cursor.getString(2));
				user.setPhoneNumber2(cursor.getString(3));
				user.setShortNumber1(cursor.getString(4));
				user.setShortNumber2(cursor.getString(5));
				user.setOrgId(cursor.getInt(6));
				return user;
			}
			
		});
	}
	
	

 其中改动的关键点:



 



 现在让我们看一下是否works:

编写代码测试是否能查找到电话号码为888888的用户:

userdao=new UserDao(this);
		User user=userdao.getUser("888888");
		datashow.append(user.getUserName()+"电话号码:"+user.getPhoneNumber1()+"\n");

 

 OK搞定,说明我们模板是成功的。接下来继续改

【根据电话号码删除用户】:

其实例子做多了无论是按照电话号码还是人名还是性别还是年龄,都可以做出针对其变量的删除方法。

万变不离其宗,只要模板在手

找到删除模板:

public void deleteUser(String userid){
		
		helper.delete("user", "userId = ?", new String[] { userid });
	}

 

现在修改

简单:将userid替换成电话号码即可:注意除了形参,sql语句里面的参数严格按照数据库定义的修改,否则失败

public void deleteUser2(String phonenumber){
		
		helper.delete("user", "phoneNumber1 = ?", new String[] { phonenumber });
	}

 

测试:



 可以看到电话号码为888888已经被删除掉了。

对于修改数据库适应自己的app就到此结束,很多都可以自己试一下,不过基本的都在这里了。

整个工程包会在这里上传供大家使用。

 

下面的DataBaseTest 压缩包就是

文章评论

程序员都该阅读的书
程序员都该阅读的书
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
中美印日四国程序员比较
中美印日四国程序员比较
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为什么程序员都是夜猫子
为什么程序员都是夜猫子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何成为一名黑客
如何成为一名黑客
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员和编码员之间的区别
程序员和编码员之间的区别
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
旅行,写作,编程
旅行,写作,编程
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
鲜为人知的编程真相
鲜为人知的编程真相
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的鄙视链
程序员的鄙视链
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Java程序员必看电影
Java程序员必看电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
编程语言是女人
编程语言是女人
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有