我有这样的SQL查询.
select "DEPT"."DEPTNO" as "DEPTNO1", "DEPT"."DNAME" as "DNAME1", "DEPT"."LOC" as "LOC1", "EMP"."COMM" as "COMM1", "EMP"."EMPNO" as "EMPNO1", "EMP"."ENAME" as "ENAME1", "EMP"."HIREDATE" as "HIREDATE1", "EMP"."JOB" as "JOB1", "EMP"."MGR" as "MGR1", "EMP"."SAL" as "SAL1" from "EMP" , "DEPT" where "DEPT"."DEPTNO" in (:DeptNo)
//这是Jdbc代码
Class.forName(DB_DRIVER); dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD); Statement statment = dbConnection.createStatement(); result = statment.execute(query);//query is above sql query
当我在Oracle上运行以上查询时,sql开发人员工作得很完美.但是当我用上面的jdbc代码运行它时,它会抛出并非所有变量绑定异常.如何在JDBC中运行上面的查询
用:deptno
?替换你的查询.
而不是实例化语句使用以下内容:
PreparedStatement stmt=con.prepareStatement(query); stmt.setInt(1,deptno); //1 is for the first question mark
其中deptno
包含要执行查询的值.
通过PrepredStatement接口,我们可以使用仅编译一次的参数化查询,与Statement接口相比具有性能优势.