我在网上找到的一个例子之后编写了这段代码,但它不起作用,请你告诉我它可能有什么问题。它似乎做了一些事情并打印出结果但没有任何改变。
package com.company.Start;
import java.sql.*;
public class PreparedStmt
{
public static void main(String[] args) throws Exception
{
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@PC:1521/XE","ACCOUNT", "password");
PreparedStatement updateDB = con.prepareStatement("UPDATE Customers SET lname=? WHERE name=?");
updateDB.setString(1, "Meier");
updateDB.setString(2, "Peter");
updateDB.execute();
Statement smt = con.createStatement();
String query = "SELECT * FROM customers";
ResultSet rs = smt.executeQuery(query);
System.out.println("NAME LNAME ADRESS");
while (rs.next()) {
String name = rs.getString("name");
String lname = rs.getString("lname");
System.out.println(name + " " + lname);
}
}
}
答案 0 :(得分:0)
尝试使用updateDB.executeUpdate()
代替updateDB.execute()
。奇怪的是,execute
在大多数情况下不适用于数据更新。
答案 1 :(得分:0)
你的代码似乎很好。
updateDB.executeUpdate();
返回的值(int)是什么?
DB实用程序(如SQLFront)在给出相同的语句时会产生什么?
试试con.setAutoCommit(true);
和updateDB.close();
答案 2 :(得分:0)
尝试“......名字就像?”为了价值“%Peter%”
我猜这个名字不匹配,因为有空白或其他东西。
请注意,上述内容也会改变“Peter-Alexander”或“Hans-Peter”等条目。 所以这只是证明它的价值不完全匹配。