在预准备语句中为char DB列设置字符串

时间:2015-07-22 08:42:44

标签: oracle jdbc char prepared-statement resultset

这是我的代码,我在oracle中有一个名为Product Id和数据类型为CHAR(6字节)的列。我已使用此列的set string方法从Database中检索详细信息。实际上我将结果设置为false(它已空)并且没有提取记录。但是当我使用'PRODUCT_ID =“+ value +”'时,它可以工作。如何解决这个问题..

sSQL="SELECT * FROM CART_VIEW WHERE PRODUCT_ID=? AND  PRODUCT_NAME=? ";
ps=conn.prepareStatement(sSQL);
ps.setString(++i, sProductId);
ps.setString(++i, sProductName);
rs=ps.executeQuery();

1 个答案:

答案 0 :(得分:2)

列格式CHAR(6)表示(与VARCHAR2格式相反)短于6个字节的字符串是空白填充的。即你必须在一个全长的空白填充中提供字符串。

如果您插入' X'在专栏

 -- return nothing
 select * from test where xx = 'X'; 

 -- returns a row
 select * from test where xx = 'X     '; 

即。你必须传入setString的全长字符串。