atitit.数据验证--db数据库数据验证约束
atitit.数据验证--db数据库数据验证约束
1. 为了加强账户数据金额的安全性,需要增加验证字段。。
调用::
在创建,更改金额的时候,都要更改前验证。。。
更改金额的时候,还要严重数据库里面的数据准确性
更改时的加密数据从哪里来,直接从校验器来就是了。。
new SqlCheckor().getValideVal(new_money);
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
2. 创建帐户
public void createAcc(String uname, double d) {
BigDecimal money=new BigDecimal(d);
String v_vali=new SqlCheckor().getValideVal(money);
String $sql = "insert into ecs_users( "+
" user_name,user_money,vali_val )values('@u@', "+String.valueOf(d)+"" +
",'$vali$' )";
$sql= $sql.replace("@u@", uname).replace("$vali$", v_vali);
System.out.println("---"+ $sql);
sqlCkSrv.valideValCheck4newRow(money, v_vali);
int r=dbx.execSql_retInt($sql);
System.out.println("----ret int:"+String.valueOf(r));
3. 更改账户
public int addAmount(String uid, BigDecimal i) {
iniAcc(uid);
String sql = strUtil.fmt( "select * from ecs_users where user_name='$uid$'",uid);
Map row=dbx.uniqueResult2row(sql);
if(row==null)
throw new CantFindAcc("uid="+uid);
BigDecimal now=(BigDecimal) row.get("user_money");
//SqlCheckor sqlCkSrv=
if(row.get("vali_val")!=null) //for compati olddata no vali
sqlCkSrv.valideValCheck4oldrow(row.get("user_money"),row.get("vali_val").toString() );
BigDecimal new_money=now.add(i);
String new_money_vali= new SqlCheckor().getValideVal(new_money);
new SqlCheckor().valideValCheck4newRow(new_money, new_money_vali);
//DataLogicSales
// TODO Auto-generated method stub
/* 更新用户信息 */
String sql2 = "UPDATE ecs_users "+
" SET user_money =$newMoney$,vali_val='$vali$'"+
" WHERE user_name = '"+uid+"' LIMIT 1";
String $sql = sql2.replace("$newMoney$", new_money.toString()).replace("$vali$",new_money_vali);
System.out.println("---"+ $sql);
int r=dbx.execSql_retInt($sql);
if(r!=1)
throw new AccEx(" acc ex ret is:"+String.valueOf(r) +" uid:"+uid);
System.out.println("----ret int:"+String.valueOf(r));
return r;
}
}
4. ---code
public void valideValCheck4oldrow( String sql,String col,String valide_col) {
//Map row=sqlSrv.executeQueryFirstRow(sql);
//String v=(String) row.get(col);
//String valid=(String) row.get(valide_col);
//if(! AesV2q421.encrypt(v, "ilovmole").equals(valid))
//
//throw new ValidValCheckEx("sql:"+sql);
}
public void valideValCheck4newRow(Object val,String valEncoded) {
if(! AesV2q421.encrypt(val.toString(), "ilovmole").equals(valEncoded))
throw new ValidValCheckEx("val.encode:"+val+"-"+valEncoded);
}
public String getValideVal(Object v)
{
return AesV2q421.encrypt(v.toString(), "ilovmole");
}
/**should str2 dec compare..cant dec2str comapre..cause to db and from db ,then num point maybe changte...but true val is not change..
attilax 2016年4月25日 下午10:24:55
* @param object
* @param object2
*/
public void valideValCheck4oldrow(Object val, String valEncoded) {
//8CBAC0UjkdSjLBFwKNB2iA==
BigDecimal money=new BigDecimal( AesV2q421.decrypt(valEncoded, "ilovmole"));
if(money.compareTo( (BigDecimal) val)!=0)
throw new ValidValCheckEx("val.encode:"+val+"-"+valEncoded);
5. --fini
}
atitit.数据验证--db数据库数据验证约束的更多相关文章
- 通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试
通过上一步,环境已搭建好了. 下面开始实战, 首先,编写链接mysql的函数conn_sql.py import pymysql def sql_conn(u,pwd,h,db): conn=pymy ...
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...
- 通过读取excel数据和mysql数据库数据做对比(一)-win环境准备
要想操作excel和mysql首先需要安装python,然后是安装excel和mysql插件: 第一步安装python: 直接百度搜索,下载安装就可以了. 第二步安装excel插件: 首先到这个htt ...
- C#在listview控件中显示数据库数据
一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...
- ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动
一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...
- 01- ajax, 登录验证,json数据,文件上传
1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...
- Oracle 数据库表中已有重复数据添加唯一键(唯一约束)
Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...
- 第十节:数据批注(DataAnnotationModel)和自定义验证(包括Model级别的验证)
一. 简介 写完上一个章节MVC中的常用特性,迫不及待将该系列补全,该章节主要介绍数据批注(也叫:注解). 一听[数据批注],好高大上的名字,但仔细一看,它们其实是[System.ComponentM ...
- 我这么玩Web Api(二):数据验证,全局数据验证与单元测试
目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试 一.模型状态 - ModelState 我理解 ...
随机推荐
- Deep learning:四十七(Stochastic Pooling简单理解)
CNN中卷积完后有个步骤叫pooling, 在ICLR2013上,作者Zeiler提出了另一种pooling手段(最常见的就是mean-pooling和max-pooling),叫stochastic ...
- Android反编译(二)之反编译XML资源文件
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
- kafka设计原理介绍
背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...
- [logstash-input-log4j]插件使用详解
Log4j插件可以通过log4j.jar获取Java日志,搭配Log4j的SocketAppender和SocketHubAppender使用,常用于简单的集群日志汇总. 最小化的配置 input { ...
- 基于 CSS3 Media Queries 的 HTML5 应用
先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3 ...
- linux的计划
我接触linux也有好几年了,至少有5年了.最近公司在搞内部培训,人人都可以报名培训别人.想到自己在linux浸淫多年,应该出来出一份力.一直以来想就linux写一个专题.今天刚好在做相关的ppt,借 ...
- 在Visual Studio 2015 Preview 中使用Github 版本控制
打开Visual Studio,新建项目,右下角勾选,如下图: 点击‘OK’后,出现下图窗口,选择'Git' : 如果是现有项目可以在‘文件’菜单下找到‘Add to Source Control’ ...
- Android中的FragmentManager的问题
Fragment是构成灵活UI的重要部分.最近学习到Fragment的使用时候,碰到一个问题.主程序程序布局非常简单: <?xml version="1.0" encodin ...
- 完美且精准的 IE10- 版本检测。
通过动态的写入条件注释的方式,来判断当前的ie浏览器的版本,优点是,对比userAgent字符匹配,要精准很多,应该说是100%正确,缺点就是要通过JS写入条件注释,拖慢页面的加载速度. 如果对于只判 ...
- jquery的promise实践--连续加载图片
在javascript设计模式实践之代理模式--图片预加载中用代理模式实现了图片预加载功能. 现在就更进一步,完成一个能够一张一张的连续图片加载的功能. 功能: 1.一张一张加载图片. 2.加载错误, ...