0

フォームがあり、データをデータベースに送信したいと考えています。メソッド パラメータを介してリクエスト データを渡し、それをデータベースに送信するにはどうすればよいですか?

int status = InsertCustomer(fName, mName, lName , iage, issn, city, state, country);

//メソッド // このメソッドは、executeUpdate メソッドが返す // int を返す必要があります。注: ドライバー名と URL は // init() メソッドで既に利用可能です。

  private int InsertCustomer(String firstName, String midName, String lastName, int age, int ssn, String city, String state, String country) {

    // JDBC logic


    try {
        Class.forName(driverName);
        Connection conn = DriverManager.getConnection(databaseURL);
        java.sql.Statement st = conn.createStatement();


        st.executeUpdate("INSERT INTO Customer(firstName, midName, lastName, age, ssn, city, state, country)" + 
                   "VALUES ('?', '?', '?', ?, ?, '?', '?', '?')";


    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

    return 1;
}

私は少し迷っています。少しでもいただければ幸いです。

4

1 に答える 1

2

単純な (つまり、準備されていないステートメント) を使用し、パラメーターを渡すことができないかのいずれかです。

String sql = "insert into sometable (a, b, c) values (7, 8, 9)";
Statement st = conn.createStatement();
return st.executeUpdate(sql);

または(そしてあなたの場合、それがあなたがすべきことです)、準備されたステートメントを使用してパラメーターを渡します:

String sql = "insert into sometable (a, b, c) values (?, ?, ?)";
PreparedStatement st = conn.prepareStatement(sql);
st.setInt(1, 7);
st.setInt(2, 8);
st.setInt(3, 9);
return st.executeUpdate();

コードでは、単純なステートメントを使用しており、パラメーターが必要な SQL クエリを実行しようとしています。それは可能ではありません。そのためには、準備されたステートメントが必要です。

詳細については、JDBC チュートリアルを参照してください。

于 2013-01-26T21:49:51.033 に答える