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 我理解 ...
随机推荐
- SQLServer学习笔记系列7
一.写在前面的话 转眼又是周一,回想双休的日子,短暂而幸福,在阳光明媚的下午,可以自己做自己想做的任何事,惬意舒适,或读书,或运动,或音乐,当我们静下心来慢慢感受这些的时候,会突然发觉,原来生活是这么 ...
- 手机端web学习基础--from慕课网
web知识零零散散的知道一些,但总感觉不够系统,遇到问题不知道如何解决,因此特此来系统的学习一下web前端的知识.从慕课网的web基础看起.下面学习http://www.imooc.com/learn ...
- Elasticsearch聚合 之 Histogram 直方图聚合
Elasticsearch支持最直方图聚合,它在数字字段自动创建桶,并会扫描全部文档,把文档放入相应的桶中.这个数字字段既可以是文档中的某个字段,也可以通过脚本创建得出的. 桶的筛选规则 举个例子,有 ...
- 搭建 Hexo Blog
一.教程参考:https://xuanwo.org/2015/03/26/hexo-intor/ 二.命令总结 1.node -v.npm -v:查看 node.js 是否安装成功 2.npm ins ...
- 解决MVC EF Code First错误:Model compatibility cannot be checked because the EdmMetadata type was not included in the model.
Model compatibility cannot be checked because the EdmMetadata type was not included in the model. En ...
- DP - 2016网易杭研笔试题A
2016网易杭研笔试题A Problem's Link ------------------------------------------------------------------------ ...
- 改进网站设计的免费jQuery插件Top 7
Animate Scroll.js是一个简单的jQuery插件,它用来为滚动增加延迟效果.同时你还可以自定义滚动样式(30多种滚动效果)和滚动速度,还有一个可以操纵”滚动结束位置”的”padding” ...
- jquery列表顺序倒转排序效果
html文件代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&quo ...
- 本地电脑安装和配置Redis操作客户端
下载需要的文件:http://pan.baidu.com/s/1gdfQePl 把这个下载下来解压就可以了,如图所示 第一步(配置本地服务) 点击run这个DOS执行命令 因为是自己的电脑测试 ...
- Scalaz(43)- 总结 :FP就是实用的编程模式
完成了对Free Monad这部分内容的学习了解后,心头豁然开朗,存在心里对FP的疑虑也一扫而光.之前也抱着跟大多数人一样的主观概念,认为FP只适合学术性探讨.缺乏实际应用.运行效率低,很难发展成现实 ...