• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

java出错了,报错SQL出错,错误是java.sql.SQLException: sql injection violation, dbType mysql

武飞扬头像
csdn
帮助336

前言

报错提示信息如下:

java.sql.SQLException: sql injection violation, dbType mysql

sql injection violation,字面理解就是sql注入错误,多数情况都是列名被怀疑是sql注入,所以被拒绝,需要检查字段(比如用户id在别的地方是user_Id,但在user自己表里面即主键就叫id)

解释:

一般情况下,都是因为表字段和关键字冲突,这个问题解决后多数情况都正常了。如果开发工具不显示SQL关键字不方便区分的话,暂时我只知道三种解决办法:

  1. 可以把感觉不对劲的表名和字段名都用  `  `  给注上,如`state`
  2. 给冲突的字段或表名起别名
  3. 还可以在oracle中使用双引号"",将冲突的列名括起来

例子:select * from user where "name" = "张三他叔"

所以为了避免这种情况,在数据库最初建表时需要有意识的避免字段冲突问题,下面是网上找的建表命名规范:


采用“系统名 _ t_ 模块名 _ 表义名”格式构成。
若数据库中只含有单个模块,命名可采用“系统名 t_ 表义名”格式构成。
整个表名的长度不要超过30个字符。
系统名、模块名均采用小写字符。
模块名或表义名均以其英文单词命名,且字符间不加分割符;表义名中单词的首字符大写,其它字符小写,多个单词间也不加任何分割符,单词全部采用单数形式。
表别名命名规则:取表义名的前3个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4个字符加最后一个字符等)。
关联表命名为Re_表A_表B,Re 是Relative的缩写,表A 和表B均采用其表义名或缩写形式。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanegfj
系列文章
更多 icon
同类精品
更多 icon
继续加载