2017-09-19 9 views
3

私は構文エラーを受け取った値を挿入しながら、eclipseとmySQLをコーディングに使用しています。Java:SQL構文にエラーがあります。使用する正しい構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください

if(!(nameOfConvo.equals(visitorName))){ 
        staffConvo = StringUtils.substringAfter(convo, ": "); 
        System.out.println("Staff - " + staffConvo); 
        String staffSql = "INSERT INTO webchatdata" + "(staffConvo)" + "VALUES ('"+ staffConvo+ "')"; 
        myStat.executeUpdate(staffSql); 
       } 
        else { 
         visitorConvo = StringUtils.substringAfter(convo, ": "); 
         System.out.println("Visitor - " + visitorConvo); 
         String visitorSql = "INSERT INTO webchatdata" + "(visitorConvo)" + "VALUES ('" +visitorConvo+"')"; 
         myStat.executeUpdate(visitorSql); 
       } 

MySQLでは、それはいくつかの値をプリントアウトしている間、それが途中までしか表示し、印刷します:データベースに他の変数を挿入する

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's in a course that he has interest in, it is likely that he will excel in it. I' at line 1 

は元のように罰金でした。

String timeStampSql = "INSERT INTO conversation" + "(timestamp)" + "VALUES ('" +timeStamp+"')"; 
      myStat.executeUpdate(timeStampSql); 
+1

空間が '(タイムスタンプ)'と 'VALUES'間に欠落しています。 – Berger

+0

@Berger実際には、それは彼が働いていると主張しているものです... – Stultuske

答えて

4

問題は、あなたがSQLに入れているコンテンツにある可能性があります。このようなものになるかもしれない完全な文字列を想定し

... (あなたが実際の入力が、この場合には何か提供していないので、私は唯一の前提とすることができます)最初にその

Bob's in a course that he has interest in, it is likely that he will excel in it. I'm writing

お知らせ最後の文字は一重引用符です。

これは、文字列内で'と読み込まれたときに文字列を閉じるため、これはSQL挿入文字列を破棄しています。

文字列を保存するときに、文字列が正しく終了しないように引用符をエスケープする必要があります。追加されたバックスラッシュに注意してください。

Bob\'s in a course that he has interest in, it is likely that he will excel in it. I\'m writing

+0

ありがとう、それは読書に影響していた引用でした! – Bob

関連する問題

 関連する問題