-2

これは私のコードです:

public static List GetList(String myname) {
    .
    .
    ResultSet result = stmt.executeQuery("SELECT * FROM authors WHERE name = ?");
    result.setString(myname);
}

name = myname (myname は関数の入力) の場所を選択したいです。

私も次のようなものを試しました:

WHERE name = @myname

しかし、うまくいきません:/

4

4 に答える 4

6

結果ではなくステートメントに値を設定します。

PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM authors WHERE name = ?");
pstmt.setString(1, myname);
ResultSet result = pstmt.executeQuery();
于 2012-11-28T19:32:41.463 に答える
4

より良い方法は、 を使用PreparedStatementして を回避することSQL Injectionです: -

PreparedStatement stmt = con.prepareStatement("SELECT * FROM authors WHERE name = ?");
stmt.setString(1, myname);
ResultSet res = stmt.executeQuery();

ただし、問題を解決するために、文字列連結を使用できます: -

stmt.executeQuery("SELECT * FROM authors WHERE name = '" + myname + "'");

于 2012-11-28T19:32:19.507 に答える
1

私が間違っていなければ、ここで準備されたステートメントを使用したほうがよいでしょう:

PreparedStatement stmt = conn.prepareStatement("SELECT * FROM authors WHERE name = ?");
stmt.setString(1, myname);
ResultSet result = stmt.executeQuery(); 
于 2012-11-28T19:36:19.913 に答える
-1

これを試して:

ResultSet result = stmt.executeQuery("SELECT * FROM authors WHERE name = " + myname);
于 2012-11-28T19:32:07.620 に答える