Почему я продолжаю получать эту проклятую ошибку неверного идентификатора SQL * Plus?

Я продолжаю получать исключение недопустимого идентификатора, когда пытаюсь запустить следующий сценарий: javax.servlet.ServletException: java.sql.SQLException: [Oracle] [ODBC] [Ora] ORA-00904: "CUSTID": недопустимый идентификатор

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
   conn = DriverManager.getConnection("jdbc:odbc:rreOracle","xxxxxx","xxxxxxxx"); 
   stmt = conn.createStatement(); 
  PreparedStatement preparedStatement;

      //get parameters from the request
      String custID=request.getParameter("cust_ID");
      String saleID=request.getParameter("sale_ID");
      String firstName=request.getParameter("first_Name");
      String mInitial=request.getParameter("mI");
      String lastName=request.getParameter("last_Name");
      String streetName=request.getParameter("street");
      String city=request.getParameter("city");
      String state=request.getParameter("state");
      String zipCode=request.getParameter("zip_Code");
      String DOB=request.getParameter("DOB");
      String agentID=request.getParameter("agent_ID");
      String homePhone=request.getParameter("home_Phone");
      String cellPhone=request.getParameter("cell_Phone");
      String profession=request.getParameter("profession");
      String employer=request.getParameter("employer");
      String referrer=request.getParameter("referrer");


   preparedStatement = conn.prepareStatement("UPDATE customer"
+ " SET customer.cust_ID=?, customer.sale_ID=?, customer.first_Name=?, customer.mI=?, customer.last_Name=?, customer.street_Name=?, customer.city=?, customer.state=?, customer.zip_Code=?,customer. DOB=?, customer.agent_ID=?, customer.home_Phone=?, customer.cell_Phone=?, customer.profession=?, customer.employer=?, customer.referrer=?"
+ " WHERE customer.cust_ID=custID ") ;

   preparedStatement.setInt(1, Integer.valueOf(custID));
   preparedStatement.setInt(2, Integer.valueOf(saleID));
   preparedStatement.setString(3, firstName);
   preparedStatement.setString(4, mInitial);
   preparedStatement.setString(5, lastName);
   preparedStatement.setString(6, streetName);
   preparedStatement.setString(7, city);
   preparedStatement.setString(8, state);
   preparedStatement.setString(9, zipCode);
   preparedStatement.setString(10, DOB);
   preparedStatement.setInt(11, Integer.valueOf(agentID));
   preparedStatement.setString(12, homePhone);
   preparedStatement.setString(13, cellPhone);
   preparedStatement.setString(14, profession);
   preparedStatement.setString(15, employer);
   preparedStatement.setString(16, referrer);

   preparedStatement.executeUpdate();

person Mike    schedule 17.04.2011    source источник
comment
Кажется, вы не используете SQL * Plus ...   -  person Jeffrey Kemp    schedule 18.04.2011


Ответы (2)


ты можешь попробовать

<%preparedStatement = conn.prepareStatement("UPDATE customer"
+ " SET customer.cust_ID=?, customer.sale_ID=?, customer.first_Name=?, customer.mI=?, customer.last_Name=?, customer.street_Name=?, customer.city=?, customer.state=?, customer.zip_Code=?,customer. DOB=?, customer.agent_ID=?, customer.home_Phone=?, customer.cell_Phone=?, customer.profession=?, customer.employer=?, customer.referrer=?"
+ " WHERE customer.cust_ID=?") ;%>
<%preparedStatement.setString(17, custID );%>

or

<%preparedStatement = conn.prepareStatement("UPDATE customer"
+ " SET customer.cust_ID=?, customer.sale_ID=?, customer.first_Name=?, customer.mI=?, customer.last_Name=?, customer.street_Name=?, customer.city=?, customer.state=?, customer.zip_Code=?,customer. DOB=?, customer.agent_ID=?, customer.home_Phone=?, customer.cell_Phone=?, customer.profession=?, customer.employer=?, customer.referrer=?"
+ " WHERE customer.cust_ID="+custID ) ;%>

Надеюсь, это поможет.

person Himanshu A Jadav    schedule 17.04.2011
comment
Спасибо Химаншу !!! Это сработало. Вы не представляете, насколько я это ценю. Я ошибочно предположил, что рассматриваемый custID был первым, который свел меня с ума, но это был второй. Woooooooow. Я никогда не забуду, что когда-либо еще в жизни, когда столбец приравнивается к значению, значение не заключено в кавычки - базовое программирование 101, когда я думаю об этом. Спасибо еще раз!!!! - person Mike; 18.04.2011

В этой части вашего утверждения «WHERE customer.cust_ID = custID» оракул ищет значение, называемое «custID».

В этот момент имена переменных в вашем контексте не имеют значения - внутри SQL оператор «where A = B» ссылается на «столбец A == столбец B» - поскольку в таблице нет столбца «custID», Oracle жалуется .

person Steve B.    schedule 17.04.2011
comment
Спасибо за объяснение, Стив. Ваше объяснение, добавленное к исправлению выше от Химаншу, помогло. Я вижу, что делал не так. Бесконечно благодарен!!! - person Mike; 18.04.2011