2013-11-15 5 views
0

Я пишу код, который хорошо отображает вывод на экране вывода. Но когда я связываю базу данных с ней, она дает ошибку некоторого типа, который я много ищу в Google, но не могу получить помощь.Ошибка ввода базы данных Derby

import java.net.URL; 
import java.io.*; 
import java.util.ArrayList; 
import java.sql.Connection; 
import java.sql.DriverManager; 

import java.sql.SQLException; 
import java.sql.Statement; 

public class Test{ 
    public ArrayList lines=new ArrayList();// global list contain <item>.......</item> 

    public static void main(String[] args) throws Exception { 
     Test obj= new Test(); 

     /* String proxy="172.16.4.7"; //proxy address 
     String port= "1117"; //proxy port 
     System.setProperty("http.proxyHost" , proxy); //setting proxy 
     System.setProperty("http.proxyPort", port); //setting proxy port 
     */ 
     URL url = new URL("http://feeds.feedburner.com/geo/GiKR"); //geo url 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String line; 
     line=in.readLine(); //skiping first line of xml version 
     line= in.readLine(); 

     if (line.contains("<item>")) { 
      while(line.contains("<item>")) { 
       line = obj.extractItem(line); //extraction <item>a nd </item> from origional news feed 

      } 

     } 
    } 
String extractItem(String line){ 
    int start=0, end=0,length=0; 
    start= line.indexOf("<item>"); 
    end= line.indexOf("</item>"); 
    length= line.length(); 
    try{ 
    String host = "jdbc:derby://localhost:1527/NewsFinal"; 
    String uName="ashfaq"; 
    String pass="pakistan"; 
    Connection con = DriverManager.getConnection(host, uName, pass); 
    Statement stmt= con.createStatement(); 

    //lines.add(line.substring(start+6, end)); 
    String item=line.substring(start+6, end+7); 
    //System.out.println(item); 
    //String query="INSERT INTO ITEMS2(ITEM) VALUES(" + "'"+item+"'"+")"; 
    String query="insert into ITEMS(ITEMDATA) values("+"'" + item + "'"+")"; 
    stmt.executeUpdate(query); 
    } 
    catch(SQLException err) 
    {System.out.println(err.getMessage());} 

    //System.out.println(line.substring(start+6, end+7)); //strat+6 to remove item tag, start+13 removes item and title tag 
    return line.substring(0,start) + line.substring(end+6,length); 
    } 

} 

Здесь выходной сигнал, генерируемый ею:

run: 
Syntax error: Encountered "1" at line 1, column 318. 
Syntax error: Encountered "1" at line 1, column 330. 
Syntax error: Encountered "1" at line 1, column 342. 
Syntax error: Encountered "1" at line 1, column 318. 
Syntax error: Encountered "1" at line 1, column 330. 
Syntax error: Encountered "1" at line 1, column 326. 
Syntax error: Encountered "1" at line 1, column 351. 
Syntax error: Encountered "1" at line 1, column 319. 
Syntax error: Encountered "1" at line 1, column 299. 
Syntax error: Encountered "1" at line 1, column 328. 
Syntax error: Encountered "1" at line 1, column 307. 
Syntax error: Encountered "1" at line 1, column 331. 
Syntax error: Encountered "1" at line 1, column 334. 
Syntax error: Encountered "1" at line 1, column 319. 
Syntax error: Encountered "1" at line 1, column 334. 
Syntax error: Encountered "1" at line 1, column 307. 
Syntax error: Encountered "1" at line 1, column 325. 
Syntax error: Encountered "1" at line 1, column 301. 
Syntax error: Encountered "1" at line 1, column 312. 
Syntax error: Encountered "1" at line 1, column 306. 
Syntax error: Encountered "1" at line 1, column 327. 
Syntax error: Encountered "1" at line 1, column 342. 
Syntax error: Encountered "1" at line 1, column 333. 
Syntax error: Encountered "1" at line 1, column 338. 
Syntax error: Encountered "1" at line 1, column 329. 
BUILD SUCCESSFUL (total time: 3 seconds) 

в функции extractItem(String line), когда я раскомментировать

System.out.println(item); 

он отображает выходной хорошо, но косяк вставку в базе данных, которые я создал с этим.

База данных идет хорошо, я вставляю в нее данные из gui, и это сработало, а также из команды execute, но не знаю, почему возникает эта ошибка.

+0

Вы выяснили свой вопрос? У вас все еще проблемы? –

+0

Да, я понял. – Ashfaq

ответ

0

Просто положить кавычки вокруг произвольной строки не будет достаточно, чтобы сделать ее действительной как VALUE, если она содержит другую цитату и оставляет вас широко открытыми для атак SQL Injection.

Используйте значение PreparedStatement и установите для него значение.

Вы также создаете новые Connection и Statement для каждого элемента и не закрываете их.

+0

ОК я обновлю эти вещи, а затем доберусь до u – Ashfaq

+0

. Я понял ошибку. и установил, что – Ashfaq

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