数据表test中,data列存放的是mysql自带ENCODE函数加密的数据,想要实现查询直接返回解密后的数据,利用自带DECODE函数。sql语句:SELECTid,DECODE(data,?)FROMtest?用pstmt.setStrin...
数据表 test 中,data 列存放的是mysql自带ENCODE函数加密的数据,想要实现 查询直接返回解密后的数据,利用自带DECODE函数。
sql 语句:SELECT id,DECODE(data,?) FROM test
? 用 pstmt.setString(1, key) 替换成密钥; 在mysql 脚本中,查询可返回数据,正常。
但是在eclipse 调用就不行。
----------------下面为eclipse 报错---------------
sql:SELECT id,DECODE(data,?) FROM test
java.sql.SQLException: Column 'data' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1162)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5728)
at com.cpic.test.mysqlTest.DECODE(mysqlTest.java:164)
at com.cpic.test.mysqlTest.main(mysqlTest.java:26)
----------------- 报错结束--------------------------------------
我把sql 语句改成 :SELECT * FROM test where DECODE(data,?)=?
第一个 ? 为 key, 第二? 为 正常数据用来比对。
换成 第二种sql 语句后,eclipse可以实现,但是返回的数据是加密的,所以没用。
展开