Ваш код не делает то, что вы думаете. Посмотрите на это:
query =
"UPDATE customer"
+ " SET customer.cust_ID=custID, customer.sale_ID=saleID, customer.first_Name=firstName, customer.mI=mInitial, customer.last_Name=lastName, customer.street_Name=streetName, customer.city=city, customer.state=state, customer.zip_Code=zipCode,customer. DOB=DOB2, customer.agent_ID=agentID, customer.home_Phone=homePhone, customer.cell_Phone=cellPhone, customer.profession=profession, customer.employer=employer, customer.referrer=referrer"
+ " WHERE customer.cust_ID=custID "
Содержимое query
на данный момент равно точно , что будет отправлено в базу данных. JSP не будет магически заполнять custID
, saleID
(и т. Д.) Для вас перед отправкой запроса в базу данных. Из-за этого Oracle не имеет ни малейшего понятия, что такое custID
(это, конечно, не имя какого-либо другого столбца в таблице customer
). Следовательно, вы получаете неверный идентификатор ошибки.
Я думаю вы пытались сделать это:
query =
"UPDATE customer"
+ " SET customer.cust_ID=" + custID + ", customer.sale_ID=" + saleID + ...
Как упоминалось в duffymo, здесь возникает серьезная проблема с SQL-инъекцией (просто подумайте о значениях, которые клиент может передать, чтобы перехватить ваш SQL через поле custID
). Лучше использовать параметры для PreparedStatement
:
query =
"UPDATE customer"
+ " SET customer.cust_ID=?, customer.sale_ID=? ...";
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, custID);
statement.setString(2, saleID);
statement.executeUpdate();