`

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

阅读更多

                上一次课已经讲过了如何使用我们手中现有的数据库模板,那么如今我们就来定制个性化的数据库模板,首先需要对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 压缩包就是

  • 大小: 34.3 KB
  • 大小: 8.3 KB
  • 大小: 8.3 KB
分享到:
评论

相关推荐

    Java毕设项目-ssm框架个性化美食推荐系统+jsp+源代码+数据库+论文.zip

    本项目是一个基于SSM框架的个性化美食推荐系统,专为计算机相关专业的学生设计,既可作为毕业设计项目,也适用于Java学习者的实战练习。项目源码、数据库脚本及详细的开发说明一应俱全,并附有论文参考,确保您能够...

    SSM高校图书馆个性化服务及源码数据库和论文

    该项目的标题“SSM高校图书馆个性化服务及源码数据库和论文”明确指出了其内容的核心,即利用SSM框架开发的图书馆服务系统。它不仅仅提供了技术实现,还包括了与之相关的数据管理和理论分析。标签“毕业设计、软件/...

    SpringBoot个性化音乐推荐系统及源码数据库

    SpringBoot个性化音乐推荐系统是一个基于SpringBoot框架开发的音乐推荐平台,主要面向计算机专业的学生和学习者,旨在提供一个实战项目来帮助他们完成毕业设计或进行课程设计、期末项目等。该系统采用了SpringBoot...

    Adminlte后台整合Bootstrap框架含数据库

    4. **易于定制**:源代码结构清晰,CSS和JS文件分离,便于开发者进行个性化修改。 5. **插件集成**:集成了一些常用的后端框架,如jQuery、Moment.js、SweetAlert等,提高开发效率。 描述中提到的“没有设计图完全...

    Java毕设项目-ssm框架高校图书馆个性化服务的设计与实现+jsp+源代码+数据库+论文.zip

    本项目针对高校图书馆的个性化服务需求,采用SSM(Spring + SpringMVC + MyBatis)框架进行设计与实现,并辅以JSP技术构建用户界面。项目涵盖了图书检索、借阅管理、用户个性化推荐等功能,旨在提升图书馆服务的智能...

    SSM企业个性化展示平台及源码数据库和论文

    首先,从系统架构上来说,SSM企业个性化展示平台采用了当今流行的SSM框架,即Spring、SpringMVC和MyBatis三个技术框架的集合。Spring框架负责整个系统的后端控制逻辑和业务逻辑的处理;SpringMVC是基于Spring的一个...

    基于springboot图书个性化推荐系统源码数据库.rar

    总结来说,《基于SpringBoot图书个性化推荐系统源码数据库》是一个集Java技术、SpringBoot框架、数据库管理和个性化推荐算法于一体的综合性项目,它涵盖了计算机专业中的多个重要知识点,对于学习和实践这些技术的...

    基于springboot个性化智能学习系统源码数据库文档.zip

    本源码数据库文档将详细阐述如何利用SpringBoot框架构建一个个性化智能学习系统。首先,系统将集成多种用户识别技术,如通过用户行为分析、历史成绩记录、兴趣爱好调查等多维度数据,对用户的学习习惯和知识点掌握...

    开发系统框架模板 附数据库

    ExtJS是一种基于JavaScript的前端框架,它为开发者提供了构建富互联网应用程序(RIA)的强大工具。这个框架使用MVC...通过研究和利用这个模板,你可以更高效地构建功能丰富的Web应用,并根据需要进行个性化定制。

    SpringBoot个性化电影推荐系统及源码和数据库

    SpringBoot个性化电影推荐系统是一个综合性的软件开发项目,它不仅能够帮助学习者在实践中学习SpringBoot框架和后端开发技术,还能够让学习者接触到机器学习、数据库设计、用户体验设计等多个领域的知识。这对于...

    基于知识图谱的个性化学习资源推荐系统的设计与实现(论文+源码)-kaic.zip

    v:18341315438 第1章 绪论 1.1研究背景及意义 1.2 国内外研究现状 1.3 研究工作和论文结构 第2章 相关技术 ...2.2 知识图谱 2.3 数据库技术 2.4 Django 框架 第3章 系统分析 ...6.4 个性化推荐模块测试

    SSM个性化美食推荐系统及源码数据库和论文

    随着互联网技术的不断进步与普及,个性化推荐系统作为电子商务和网络服务的重要组成部分,正受到广泛关注。在众多推荐系统中,针对美食的推荐系统以其独特的生活娱乐属性,吸引了大量技术爱好者的兴趣。SSM(Spring...

    SSM个性化旅游攻略定制系统及源码数据库和论文

    对于想要深入了解和学习SSM框架、JSP技术以及数据库管理的学生和学习者来说,该系统及其源码是一个宝贵的实践资源。通过学习系统的架构设计、功能实现以及数据库的构建和使用,他们可以快速掌握现代Web应用开发的...

    基于springboot个性化影院推荐系统源码数据库文档.zip

    基于SpringBoot的个性化影院推荐系统是一个综合性的项目,它不仅涉及到编程语言和框架的应用,还融合了数据分析、机器学习和数据库设计等多个领域的知识。通过本项目的实施,开发者可以提升在Java Web开发和推荐系统...

    SSM个性化影片推荐系统及源码数据库和论文

    SSM个性化影片推荐系统是一种融合了Spring, SpringMVC和MyBatis三个框架的影片推荐系统。该系统旨在根据用户的观影历史、偏好和评分等数据,为用户推荐适合的影片,增强用户的观影体验。对于计算机专业的学生和从业...

    ecshop框架全讲解之数据库和用户手册

    在“ECShop框架全讲解之数据库和用户手册”中,我们将深入探讨ECShop如何利用数据库来支撑其核心功能,以及如何通过用户手册更好地理解和操作这个系统。 一、数据库设计与管理 1. 数据库架构:ECShop采用MySQL作为...

    基于Django的个性化餐饮管理系统源码数据库文档.zip

    基于Django的个性化餐饮管理系统,不仅可以提升客户的就餐体验,还能帮助餐饮业主更有效地管理餐厅业务,优化资源配置。 一个完整的个性化餐饮管理系统通常包含用户端和管理端两部分。在用户端,顾客可以通过系统...

Global site tag (gtag.js) - Google Analytics