连接oracle出问题,求解答
public class UseDb {
	public List<Seach> queryByEName(String eName){
		List<Seach> seachs = new ArrayList<Seach>();
		Seach seach=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:orcl", "scott",
					"tiger");
			String sql = "SELECT * FROM EMP WHERE ENAME LIKE '?%?'";
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, eName);
			ResultSet rs = pstmt.executeQuery();
			for(;;){
				if(rs.next()) break;
				seach = new Seach();
				seach.setEmpNo(rs.getInt("empNo"));
				seachs.add(seach);
				//System.out.println("测试…………………………………………………………………………………………………………………………………………………………………………"+rs.getInt("empNo"));
			}
		} catch (
SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (
ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return seachs;
	}
}
错误提示:
java.sql.SQLException: ORA-01006: 绑定变量不存在
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
	at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
	at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
	at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
	at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830)
	at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
	at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
------解决方案--------------------恐怕你这个SQL和设置值不能这么写,你这种写法,问号根本是字符串中的一个正常字符,不是参数。
要修改下:
String sql = "SELECT * FROM EMP WHERE ENAME LIKE ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + eName + "%");
------解决方案--------------------将你的这段代码:
Java code
for(;;){
if(rs.next()) break;
seach = new Seach();
seach.setEmpNo(rs.getInt("empNo"));
seachs.add(seach);
}
------解决方案--------------------
SQL 语句就有问题,2个问号。一个赋值