-1

我在网上找到了一个示例后编写了此代码,但它不起作用,请您告诉我它可能有什么问题。它似乎在做某事并打印出结果,但没有任何变化。

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);
  }
 }
}
4

3 回答 3

0

试试“... WHERE name LIKE ?” 并为价值放“%Peter%”

我猜名字不匹配,因为有空格什么的。

请注意,上述内容也会更改“Peter-Alexander”或“Hans-Peter”等条目。所以这只是证明它是不完全匹配的值。

于 2013-10-01T09:58:27.590 回答
0

尝试使用updateDB.executeUpdate()而不是updateDB.execute(). 在大多数情况下, Strangelyexecute不适用于数据更新。

于 2013-10-01T09:17:21.547 回答
0

你的代码看起来不错。
返回的值(int)是updateDB.executeUpdate();多少?
给定相同的语句,数据库实用程序(如 SQLFront)会产生什么?
尝试con.setAutoCommit(true);updateDB.close();

于 2013-10-01T09:27:29.300 回答