org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。

今天在写完SQL进行查询的时候,后台一直报错显示上面的信息。看错误完全不知道原因,就重新检查了一次SQL,发现自己在某一个接收参数的外面加上了引号而其他的并没有加。

怀疑是不是由于这个引起的,就删掉这个引号,再次执行,就没有再次出现这个问题了;查看其它的资料,说是吧#{parentId}  换位 ${parentId},所以就进行了测试一下在有引号的境况下,把 # 改为 $ 发现也不会报错了。于是就找了一下关于 # 和 $ 在SQL中的区别:

1. # 将传入的数据当成一个字符串,会对自动传入的数据加一个双引号 如:select * from User where parentid =  #{parentId} 当parentId的值为100的时候

sql就会解析为 select * from User where parentid = “100”

2. $ 将传入的数据直接显示在sql语句中 如:select * from User where parentid =  ${parentId} 当parentId的值为100的时候

sql会解析为select * from User where parentid = 100

主要差别就在上面:这也就解释了:为什么我在程序中加上引号之后需要用 $ ,而不是用 #

另外:

1. #方式能够很大程度上防止sql注入,而$无法防止sql的注入;

2. $一般用于传入数据库对象,例如传入表名;

3. mybatis排序时使用order by动态参数时是使用$而不是#;

总之能用# 的时候 就不用 $ 这就好了;

时间: 2024-08-04 14:10:12

org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。的相关文章

Cause: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "SAMS_SYS_AREA_pkey"

导致错误的原因: 我在建表的sql文件中,重新定义了一个自增表("id serial primark key"),但是sql文件中还有insert语句初始化数据,这是id自增字段就不是从1开始, 这时你在添加数据时就会出现标题中问题 解决办法: 在创建好表后,执行下面一句话 SELECT setval('"SAMS_SYS_AREA_id_seq"', (SELECT MAX(id) FROM "SAMS_SYS_AREA")+1)[设置] //

PostGIS 报错为org.postgresql.util.PSQLException:错误: Operation on mixed SRID geometries

说明: 在用Openlayers与Geoserver进行开发,做在线编辑功能时,出现一个问题:每当我新增了一根要素后,再次用wfs的方式进行点击查询时,会报错mixed SRID. 通过研究发现在数据导入Postgis时,默认geom(空间属性字段)会为0,但是我在线编辑插入要素时,赋予了空间坐标系3857. SELECT st_srid(geom) FROM public.t_pressureline; 解决方案: 将数据库先手动更新一下,统一一下坐标系. select UpdateGeome

6 关于 Oracle NULL栏位和PL./SQL执行实验

今日有针对NULL值有了相关实验. 对NULL 值插入的讨论. 1, PL/SQL 中可以执行插入''或者NULL 的操作, 前提是栏位允许为空. 2, 可以对NULL进行一系列数据库运算. 如: SELECT ROUND(TO_NUMBER(MAX(A.IN_STATION_TIME)-SYSDATE))*24 FROM SFISM4.R_WIP_TRACKING_T A WHERE A.IN_STATION_TIME IS NULL 总结: 相应TO_NUMBER(NULL)也是可行, MA

mysql简单的操作(关于栏位的新增,修改,删除)

-- mysql新增栏位,并添加注释 语法: alter tabel 表名 add column 新增字段名 类型(长度定义) comment '需要添加的注释内容' 例子:alter table tbl_user_report_sms add column rpProve VARCHAR(100) COMMENT'被举报人的归属省份' -- 删除栏位 语法: alter table 表名 drop 删除的字段名 例子:alter table tbl_user_report_sms DROP r

使用VBA自动填写考勤模板中的日期栏位

首先说明一下,公司每个月末都要求员工填写考勤信息,然后发了个模板,我觉得每次都要填写日期和星期几这样的信息比较繁琐,所以就想了一个偷懒的办法,而且对模板样式也做了一下变更,使其信息展示效率得到了提高. 简单来那就是使用Office中自带的VBA功能来对考勤模板中类似日期这样有规律可循的栏位进行自动化的填写. 如图所示 这样每次填写考勤记录的时候只需填写月度栏位的信息,然后点击模板做成按钮就可以实现日期和星期栏位信息的自动化填写啦. [模板下载] PS:至于我在Excel中的VBA代码是怎么写的可

ZZ_INEERNAL每个栏位的含义

ZZ_INEERNAL包含10列,每列之间用,隔开 第一列:exception class,有KE/NE/JE/EE等 第二列:pid 第三列:tid 第四列:固定是99 第五列:固定是/data/core 第六列:exception level,0: fatal, 1: exception, 2: warning, 3: reminding 第七列:exception type info string: 如果是NE,则这个栏位是signal名称,比如:SIGSEGV, KE则为空, SWT则为

T100——菜单action控制单身栏位的修改

通过菜单ACTION来控制单身栏位内容的编辑修改: 范例axmt500: DEFINE l_xmdcua012_bk DYNAMIC ARRAY OF RECORD #170701 ljr xmdcua012 LIKE xmdc_t.xmdcua012 END RECORD DEFINE l_i_2 INT #170701 ljr #應用 a43 樣板自動產生(Version:4) ON ACTION action_modify_xmdcua012 LET g_action_choice="ac

Python(63)_写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回

`#-*-coding:utf-8-*- ''' 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回 ''' def func(l): return l[1::2] print(func([1,2,3,4,5,7])) 原文地址:https://www.cnblogs.com/sunnybowen/p/10257583.html

SAP HU上面的'Obj.to Which HU Belongs'栏位初探

SAP HU上面的'Obj.to Which HU Belongs'栏位初探 HU02,创建一个新的HU, 保存之, HU03显示这个HU 189141203942, 其'obj.to Which HU belongs'字段值为0000565293. Se16 + VEKP表,根据HU号码拿到internal HU No. 根据internal HU no去表VEPO表里查, 这个表里,0000565293 表现为Delivery字段值,如上图. 实际上,该号码并不是一个真的交货单号,去LIKP