atitit.数据验证--db数据库数据验证约束
atitit.数据验证--db数据库数据验证约束
1. 为了加强账户数据金额的安全性,需要增加验证字段。。
调用::
在创建,更改金额的时候,都要更改前验证。。。
更改金额的时候,还要严重数据库里面的数据准确性
更改时的加密数据从哪里来,直接从校验器来就是了。。
new SqlCheckor().getValideVal(new_money);
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/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
}
相关文章
- 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
- MySql: 查看当前登录用户,当前数据库
- Serverless 解惑——函数计算如何访问 SQL Server 数据库
- centos8平台搭建mysql8数据库主从同步
- spring integration同步数据库数据
- 【大数据-文摘笔记】MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
- 数据库中批量插入数据的方法,记录一下。
- mysql数据库中数据类型的长度
- Sql Server数据库数据导入到SQLite数据库中
- 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称试读版
- 初始化数据库和导入数据
- java 读取excel 将数据插入到数据库
- 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中
- 数据库面试题【十三、大表数据查询,怎么优化】
- B-树(B-Tree)与二叉搜索树(BST):讲讲数据库和文件系统背后的原理(读写比较大块数据的存储系统数据结构与算法原理)...
- paip.将数据导入到在英语语音数据库mysql道路解决空原则问题
- PostgreSQL的学习心得和知识总结(九十八)|深入理解PostgreSQL数据库开源MPP扩展Citus 时序数据(Timeseries Data) 的使用场景
- [Sqlite]-->Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作
- C#同步SQL Server数据库中的数据--数据库同步工具[同步新数据]
- python web py入门(5)-把网页的数据写到数据库
- 试述数据库完整保护的主要任务和措施。
- 为什么数据库连接很消耗资源 转
- 【数据库管理】⑧检查点checkpoint
- Mybatis源码分析之(五)mapper如何将数据库数据转换成java对象的
- 聚焦技术创新实力,时序数据库 TDengine 荣登中国技术先锋年度评选两大榜单
- 【TigerGraph】图数据库实战入门 —— 数据导入