2

文字列の値を挿入する代わりに JDBC を使用して文字列の値をデータベースに挿入しようとすると、文字列の名前が挿入されます。

firstName という名前の文字列があり、この文字列の値はユーザー入力によって与えられます。

ここに私のSQL文があります:

String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','+firstName()','123')";
4

3 に答える 3

6

さまざまな理由から、 を使用することをお勧めしますjava.sql.PreparedStatement。パラメータを使用してステートメントを実行します。たとえば、SQL インジェクション攻撃を回避したい場合。

The Java Tutorials のUsing Prepared Statementsの例を参照してください。

パラメーターを取る SQL ステートメントを使用する利点は、同じステートメントを使用して、実行するたびに異なる値を指定できることです。

PreparedStatement pstmt = conn.prepareStatement(
   "UPDATE EMPLOYEES SET FIRST_NAME= ? WHERE ID = ?");

pstmt.setString(1, "user1080390"); // set parameter 1 (FIRST_NAME)
pstmt.setInt(2, 101); // set parameter 2 (ID)

int rows = pstmt.executeUpdate(); // "rows" save the affected rows
于 2012-05-08T23:19:03.867 に答える
0

このようなもの..

String firstName ="sample";
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124',"+firstName+",'123')";
于 2012-05-10T10:36:56.297 に答える
0

これを試して

String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','"+firstName()+"','123')";

SQL インジェクションを防ぐには、クエリで使用する前に文字列をエスケープするか、準備されたステートメントを試す必要があります。

于 2012-05-08T23:25:46.590 に答える