0
     Class.forName("com.mysql.jdbc.Driver");
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
     "root", "mysecret");
     System.out.println("Connected to Database");
     Statement stmt1 = conn.createStatement();
     ResultSet rs1=null;
     String sql="insert into id
     values('"+name+"',12,+fs+,+se+,+th+,+ft+,+f+,+si+,+sv+,+ei+)";
     System.out.println("sql:"+sql);
     stmt1.executeUpdate(sql);     

名前変数は、ここに含まれていない定義部分で処理され、出力は次のようになります。

     sql:insert into id values('Golum',12,+fs+,+se+,+th+,+ft+,+f+,+si+,+sv+,+ei+);

また、変数fs、se、th、ft、f、si、sv、およびeiを参照するSQL構文のエラーも示しています。基本的に私は変数を使用してMySQLデータベースに整数を渡そうとしています。これらの変数の定義はそれ自体です

    int fs = x21;
    int se = y21;

x21とy21は、それぞれマウスクリック座標xとyを格納します。以下のコードは、座標が正しく渡されることを示しています。エラーはSQL構文にあります。この手法を使用してSQLデータベースに整数を渡すための正しい構文を知りたいです。

    System.out.println(fs);
4

3 に答える 3

2

挿入ステートメントにSQLエラーがあります。ステートメントにこれらの文字が含まれている理由はわかりませんが+、値をステートメントに連結しようとしていると思います。しかし、あなたの試みでは、+文字は文字列の一部です。二重引用符を挿入して文字列を終了および開始し、連結して挿入ステートメントを作成してみてください。

String sql="insert into id values('"+name+"',12, " +
    fs+","+se+","+th+","+ft+","+f+","+si+","+sv+","+ei+")";

もちろん、ユーザーからの値をSQLステートメントに連結するときはいつでも、SQLインジェクションに対して脆弱です。これらがユーザー値である場合は、PreparedStatement代わりにバインド変数付きを使用してください。

于 2013-03-26T19:04:31.083 に答える
0

整数変数を文字列に変換するようにJavaに指示し、SQL代入ステートメントを次のように変更する必要があります。

String sql="insert into id values('"
    + name + "',12," + fs + ", " + se + ","
    + th + "," + ft + "," + f + "," + si + "," + sv + "," + ei + ")";
于 2013-03-26T19:04:19.503 に答える
0

これを試して

String sql="insert into id values('"+name+"',12,"+fs +","+se+","+th+","+ft+","+f+","+si+","+sv+","+ei+")";

文字列でvarsを使用するための構文が間違っています。変数は引用符で囲まれていない必要があります

于 2013-03-26T19:06:23.137 に答える