atitit.数据验证--db数据库数据验证约束

1. 为了加强账户数据金额的安全性,需要增加验证字段。。1

2. 创建帐户1

3. 更改账户2

4. ---code3

5. --fini4

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_valinew 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 valideValCheck4oldrowString 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数据库数据验证约束的更多相关文章

  1. 通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试

    通过上一步,环境已搭建好了. 下面开始实战, 首先,编写链接mysql的函数conn_sql.py import pymysql def sql_conn(u,pwd,h,db): conn=pymy ...

  2. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel

    ============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...

  3. 通过读取excel数据和mysql数据库数据做对比(一)-win环境准备

    要想操作excel和mysql首先需要安装python,然后是安装excel和mysql插件: 第一步安装python: 直接百度搜索,下载安装就可以了. 第二步安装excel插件: 首先到这个htt ...

  4. C#在listview控件中显示数据库数据

    一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...

  5. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  6. 01- ajax, 登录验证,json数据,文件上传

    1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...

  7. Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

    Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...

  8. 第十节:数据批注(DataAnnotationModel)和自定义验证(包括Model级别的验证)

    一. 简介 写完上一个章节MVC中的常用特性,迫不及待将该系列补全,该章节主要介绍数据批注(也叫:注解). 一听[数据批注],好高大上的名字,但仔细一看,它们其实是[System.ComponentM ...

  9. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

随机推荐

  1. Deep learning:四十五(maxout简单理解)

    maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start ...

  2. 你真的了解setTimeout和setInterval吗?

    博客园的代码排版真难用,编辑时候是好的,一保存就是乱了——本文也同时发表在我另一独立博客上 你真的了解setTimeout和setInterval吗?,可以移步至这里吧 setTimeout和setI ...

  3. github代码管理工具的使用方法

    一.创建一个存储库 1.点击页面右上方你的用户名右边的+标志,然后点击下拉列表中的"new repository"选项,一般填写项目名称和选择public 和选择初始化有READM ...

  4. HT for Web基础动画介绍

    在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...

  5. HT for Web基于HTML5的图像操作(三)

    上篇采用了HTML5的Canvas的globalCompositeOperation属性达到了染色效果,其实CSS也提供了一些常规图像变化的设置参数,关于CSS的过滤器Filter设置可参考 http ...

  6. Fiddler使用AutoResponder进行本地文件和线上文件的映射

    直入正题.. 刚刚想写篇总结,照常登上博客园添加新随笔,写了百来字发现有什么不对劲 编辑器去哪儿了... 心想重新登录应该就OK了吧,点击退出然后重新登录 按钮一直显示加载中...简直就没法登录嘛.. ...

  7. 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

    瀑布式开发.迭代开发,区别[都属于,生命周期模型]         两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说.         传统的瀑布式开发,也就是从需求到 ...

  8. 十年微软(Microsoft)MVP

    十年微软(Microsoft)MVP,七月一日收到邮件,今早收到从美国微软寄过来的证书!

  9. 从C#到Objective-C,循序渐进学习苹果开发(3)--分类(category)和协议Protocal的理解

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本文继续上一篇随笔<从 ...

  10. 自己对Debug的一些感悟

    A.13-03-06记. 1.当项目中发现bug的时候,首先考虑如何重现,能够重现的bug比较好找寻根源. 2.思考下以前是否发现过类似bug,是否由一些外部配置所决定. 3.有循环时候注意临界条件.