上一次课已经讲过了如何使用我们手中现有的数据库模板,那么如今我们就来定制个性化的数据库模板,首先需要对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 压缩包就是
相关推荐
本项目是一个基于SSM框架的个性化美食推荐系统,专为计算机相关专业的学生设计,既可作为毕业设计项目,也适用于Java学习者的实战练习。项目源码、数据库脚本及详细的开发说明一应俱全,并附有论文参考,确保您能够...
4. **易于定制**:源代码结构清晰,CSS和JS文件分离,便于开发者进行个性化修改。 5. **插件集成**:集成了一些常用的后端框架,如jQuery、Moment.js、SweetAlert等,提高开发效率。 描述中提到的“没有设计图完全...
本项目针对高校图书馆的个性化服务需求,采用SSM(Spring + SpringMVC + MyBatis)框架进行设计与实现,并辅以JSP技术构建用户界面。项目涵盖了图书检索、借阅管理、用户个性化推荐等功能,旨在提升图书馆服务的智能...
总结来说,《基于SpringBoot图书个性化推荐系统源码数据库》是一个集Java技术、SpringBoot框架、数据库管理和个性化推荐算法于一体的综合性项目,它涵盖了计算机专业中的多个重要知识点,对于学习和实践这些技术的...
ExtJS是一种基于JavaScript的前端框架,它为开发者提供了构建富互联网应用程序(RIA)的强大工具。这个框架使用MVC...通过研究和利用这个模板,你可以更高效地构建功能丰富的Web应用,并根据需要进行个性化定制。
在“ECShop框架全讲解之数据库和用户手册”中,我们将深入探讨ECShop如何利用数据库来支撑其核心功能,以及如何通过用户手册更好地理解和操作这个系统。 一、数据库设计与管理 1. 数据库架构:ECShop采用MySQL作为...
【基于JAVA技术的个性化定制系统】是一个以Java编程语言为核心,旨在实现用户个性化需求的软件应用。该系统借鉴了Google的个性化主页理念,为用户提供高度自定义的服务,让用户可以根据自己的喜好和需求设置首页内容...
9. **插件扩展**:允许用户自定义插件,扩展框架功能,满足个性化需求。 10. **易于集成**:EasyDBO设计简洁,易于与其他Java应用框架(如Spring、Struts等)集成。 在使用EasyDBO的过程中,开发者首先需要定义...
而网络教学平台能够突破这些限制,实现教学资源的数字化、课程的个性化以及教学过程的互动化。 网络教学平台的价值在于其多元化的评价体系,这不仅包括传统的教师评价,还包括了学生自评、同伴互评等,使得评价方式...
个性化商铺-个性化商铺系统-个性化商铺系统源码-个性化商铺管理系统-个性化商铺管理系统java代码-个性化商铺系统设计与实现-基于ssm的个性化商铺系统-基于Web的个性化商铺系统设计与实现-个性化商铺网站-个性化商铺...
标题中的“老黄历数据库资源,mysql格式可直接使用”表明这是一个包含老黄历数据的数据库,以MySQL的格式提供,意味着数据已经被整理成适合在MySQL数据库系统中存储和查询的结构。这样的数据库通常用于开发与黄历...
个性化电子相册系统主要基于SSM框架结构来实现系统界面内容及功能模块的框架搭建,如上节所提到的,SSM框架结构利用三种框架组合针对性的对网站系统的每个开发环节进行独立的设计,确保了系统代码编写及运行的效率,...
基于 SSM 框架结构的个性化电子相册设计源码数据库论文是关于设计和实现一个基于 WEB 端的个性化电子相册系统平台的论文。该论文主要讨论了电子相册系统的开发设计、实现和安全性等方面的内容。 知识点一:个性化...
v:18341315438 第1章 绪论 1.1研究背景及意义 1.2 国内外研究现状 1.3 研究工作和论文结构 第2章 相关技术 ...2.2 知识图谱 2.3 数据库技术 2.4 Django 框架 第3章 系统分析 ...6.4 个性化推荐模块测试
个性化商铺-个性化商铺系统-个性化商铺系统源码-个性化商铺管理系统-个性化商铺管理系统java代码-个性化商铺系统设计与实现-基于ssm的个性化商铺系统-基于Web的个性化商铺系统设计与实现-个性化商铺网站-个性化商铺...
它旨在提供一个高效、便捷的信息化解决方案,满足校园内各类业务流程的个性化需求,如教务管理、学生管理、资源分享、通知公告等。下面将详细介绍该系统的相关知识点。 一、SpringBoot框架 SpringBoot是Spring生态...
通过这种方式,玩家的每一轮游戏成绩都能被记录下来,而开发者也可以利用这些数据进行分析,为玩家提供个性化的游戏体验。 在实现数据库连接的过程中,开发者可能采用了如SQL Server Express这样的轻量级数据库,它...