文字列の値を挿入する代わりに JDBC を使用して文字列の値をデータベースに挿入しようとすると、文字列の名前が挿入されます。
firstName という名前の文字列があり、この文字列の値はユーザー入力によって与えられます。
ここに私のSQL文があります:
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','+firstName()','123')";
さまざまな理由から、 を使用することをお勧めします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
このようなもの..
String firstName ="sample";
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124',"+firstName+",'123')";
これを試して
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','"+firstName()+"','123')";
SQL インジェクションを防ぐには、クエリで使用する前に文字列をエスケープするか、準備されたステートメントを試す必要があります。