2017-05-12 5 views
0

私はMySQLのテーブルを持って次のようになります。JavaFXのテキストフィールド:SQL構文エラー

​​

は、私は私の形でいくつかのテキストフィールドを作り、文字列として入力を保存:

String name = shopname.getText(); 
    String address = streetaddress.getText(); 
    String city = cityname.getText(); 
    String state = statename.getText(); 
    String country = countryname.getText(); 
    String zip = zipcode.getText(); 
    String phonept1 = phonecountryid.getText(); 
    String phonept2 = phoneareaid.getText(); 
    String phonept3 = phoneothernumber.getText(); 
    String phonefull = phonept2 + " " + "(" + phonept1 + ")" + " " + phonept3; 

  conn = DBConnect.Connector(); 
      stmt = conn.createStatement(); 
      stmt.executeUpdate("INSERT INTO shopList (name,address,city,state,country,zipcode,phonefull) VALUES(" +name+ "," + address + "," + city + "," + state + "," + country + "," + zip + "," + phonefull + ")"); 
      conn.close(); 

は、その後、私はちょうど古いSQLiteのデータベースとよく働いたINSERTの方法を作りました3210

しかし、今それは言う:

SEVERE:null com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:あなたはSQL構文でエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が '(22)222222'の近くで使用されていることを確認してください) '1行目

誰でも構文エラーが表示されますか?

ps。 (22)222222はテスト済みの電話入力です。

+0

'VALUES(...) 'の値は引用符で囲まれていません。これはおそらくうまくいかない。そして準備されたステートメントを使うべきです。 – janos

答えて

1
conn = DBConnect.Connector(); 
stmt = conn.createStatement(); 
stmt.executeUpdate("INSERT INTO shopList (name,address,city,state,country,zipcode,phonefull) VALUES('" +name+ "','" + address + "','" + city + "','" + state + "','" + country + "','" + zip + "','" + phonefull + "')"); 
conn.close(); 

編集(私は単一引用符であなたの文字列の値をラップしている)、これを試してみてください:

あなたは直接文字列値を渡すことによってSQLインジェクションに弱い自分を残しています。可能であれば、PreparedStatementオブジェクトとsetStringメソッドを使用します。

+0

ありがとうございました!私はすぐにそれを受け入れるでしょう。 – DeluxeD