2013-11-15 64 views
0

我正在編寫一個代碼,它很好地顯示輸出屏幕上的輸出。但是,當我將數據庫鏈接到它時,它會給出某種類型的錯誤,我在Google上搜索很多,但無法獲得幫助。德比數據庫插入錯誤

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中插入數據,它的工作,也從執行命令,但不知道爲什麼會出現這種錯誤。

+0

你有沒有想過你的問題?你還有麻煩嗎? –

+0

是的,我想通了。 – Ashfaq

回答

0

只要在任意字符串周圍加上引號,如果它包含另一個引號並且會使您對SQL Injection攻擊產生影響,將不足以使其作爲VALUE有效。

使用PreparedStatement並在其中設置值。

您也正在爲每個項目創建一個新的ConnectionStatement並且不關閉它們中的任何一個。

+0

好吧,我會更新這些東西,然後將得到你 – Ashfaq

+0

我想出了錯誤。並修正了這一點 – Ashfaq