2015-09-15 2 views
1

Я хочу вставить данные twitter из java в mySQL. этот мой код:Вставить данные Twitter из Java в MySQL

java.sql.PreparedStatement stmt = conne.prepareStatement(
          "INSERT INTO kun(ID,name,statusLocation,text,source)"      
          + "VALUES('"         
          + "','" + status.getUser().getScreenName() 
          + "','" + user.getLocation() 
          + "','" + status.getText() 
          + "','" + status.getSource() 
          + "')"); 
stmt.executeUpdate(); 
stmt.setString(1,"'"); 

Но проблема в твите с одинарной цитатой (') не может быть вставлена. В противном случае вставлен.

Он показывает эту ошибку

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 

Спасибо за ответ до

+0

Я думаю, что это немного по-другому. потому что я получил данные из твиттера, что означает, что я должен использовать такой status.getText() и т. д. –

ответ

1

Это не будет работать из-за следующих причин:

  1. Вы пытаетесь вставить значения в запросе используя stmt.setString(1,"'");, но у вас нет пробелов в запросе. В этом причина Исключения с текстом (1 > number of parameters, which is 0). Это не имеет ничего общего с одной цитатой.
  2. Вы звоните stmt.executeUpdate();, прежде чем звонить по телефону stmt.setString(1,"'");. Перед выполнением запроса необходимо задать параметры запроса.
  3. Ваш запрос неверен. Вы указываете 5 столбцов, но только указываете значения для 4 столбцов (нет значения для столбца ID). Это может сработать, если для столбца ID установлено значение AUTO_INCREMENT в вашей схеме базы данных.

Измените код следующим образом:

java.sql.PreparedStatement stmt = conne.prepareStatement(
    "INSERT INTO kun(name,statusLocation,text,source) VALUES(?,?,?,?)"); 
stmt.setString(1, status.getUser().getScreenName()); 
stmt.setString(2, user.getLocation()); 
stmt.setString(3, status.getText()); 
stmt.setString(4, status.getSource()); 
stmt.executeUpdate(); 
+0

1. Я знал, я пробовал много способов, но он все еще не может работать. Я предлагаю сбежать из одной цитаты –

+0

2. Я просто попытался переключиться, но результат все тот же. anw, спасибо за ответы –

+0

Это не имеет никакого отношения к экранированию кавычек. '' PreparedStatement'' избегает всех необходимых символов сам по себе, когда вы используете «' '' 'заполнители и заполняете их с помощью' 'setString''. – f1sh

Смежные вопросы