-1

withdraw and deposit Bank Class の money に2 つのメソッドを追加しようとしています。私のDatabase name is javatesttable name is bank以下はコードです。問題は、このコード コンパイラを実行すると、 You have an error in your SQL syntax; コードを 3 ~ 4 回チェックしたが、実際にはコードを取得できないと表示されることです。助けてください。

public static void main(String[] args) 
{ 
    Connection connection= null ; 
    Statement stmt = null ; 
    try 
    {
        Class.forName("com.mysql.jdbc.Driver");
        connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/javatest","root","");
        stmt= connection.createStatement();
        withdrawfromchecking(connection, stmt, new BigDecimal(100), 1); 
        Depositinsaving(connection, stmt, new BigDecimal(444), 1);
        stmt.executeBatch();
        System.out.println("Done");
    } 
    catch (ClassNotFoundException e) {e.getMessage();}
    catch (SQLException e) {e.printStackTrace();}

    finally 
    {
        if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}
        if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}
    }
}


public static void withdrawfromchecking(Connection connection ,Statement stmt,  BigDecimal amount , int id ) throws SQLException
{
    stmt.addBatch("UPDATE bank  SET checkingbalance = checkingbalance-"+amount+"WHERE id="+id);
}
public static void Depositinsaving(Connection connection ,Statement stmt,  BigDecimal amount , int id ) throws SQLException
{
    stmt.addBatch("UPDATE bank  SET savingbalance = savingbalance+ "+amount+"WHERE id="+id);
}
}

この行でエラーが発生します-stmt.executeBatch();プログラムを実行する と

編集:正確なエラーステートメント

java.sql.BatchUpdateException: SQL 構文にエラーがあります。MyPackage.BankAccount.main(BankAccount) の com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1193) の 1 行目の「id =1」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 .java:24)

私のコードでは (24 行目は stmt.executeBatch(); です)。

4

3 に答える 3

3

両方の SQL で、金額と単語の連結の間にスペースはありません。WHERE次のようになりますcheckingbalance-100WHERE id=

WHERE両方の単語の前にスペースを置きます。

stmt.addBatch("UPDATE bank  SET checkingbalance = checkingbalance-"
  //       +- Add space here
  //       v
  +amount+" WHERE id="+id);
于 2013-08-07T23:44:27.090 に答える
1

withdrawfromcheckingDepositin Savingのメソッドを次のように変更します。

public static void withdrawfromchecking(Connection connection, Statement stmt, BigDecimal amount, long id) throws SQLException{
        statement.addBatch("UPDATE bank SET checkingBalance = checkingBalance - " +amount+ " WHERE id =" + id);
    }

    public static void Depositinsaving(Connection connection, Statement stmt, BigDecimal amount, long id) throws SQLException{
        statement.addBatch("UPDATE bank SET savingBalance = savingBalance + " +amount+ " WHERE id =" + id);
    }
于 2014-12-09T22:03:48.177 に答える