2012-07-20 59 views
0

試圖插入這樣一個文件到數據庫數據庫PS語句插入

演員:泰勒勞特納

簡介:泰勒丹尼爾·洛特納出生於密歇根州Grand Rapids父母,Deborah和丹尼爾·洛特納。他和妹妹Makena在密歇根州Hudsonville的一個有禮貌的羅馬天主教家庭中長大。在六歲時,泰勒開始在法比亞諾的空手道學校學習武術,他和他的家人很快就注意到了他在這項運動中的獨特天賦,他很快被邀請與七次世界空手道冠軍邁克爾Chaturantabut(又名Mike Chat),八歲時,他被要求代表他的國家在十二年的時間裏在世界空手道協會的分工下成爲少年世界形式和武器冠軍,贏得三枚金牌。 2003年,泰勒在武術電路中繼續蓬勃發展,在那裏他以NASKA的黑帶開放形式,音樂武器,傳統武器和傳統形式在世界排名第一,並且在十二歲時成爲三屆少年世界冠軍。

More_Bio:然而,除了對武術的熱愛之外,泰勒很快就開始對7歲時的演技表示熱愛,當時他的武術指導員參與演出業務,鼓勵他去試鏡在漢堡王商業小外觀。儘管他沒有成功,但他非常喜歡這種體驗,所以他告訴父母他想從事演藝事業。不久,他和他的家人從密歇根州的家中往返加利福尼亞旅行,因此泰勒可以定期試演演員角色。當泰勒十歲時,隨着頻繁的旅行和機票費用開始變得壓倒一切,他的家庭做出了重要的決定,搬遷到洛杉磯,泰勒在那裏可以全天候參加電影,電視和廣告的試鏡。

原因:這是一個hunky青少年偶像!我在「暮光之城」系列中把他當作雅各布布萊克的愛人!他是我見過的最好看的球員之一,當我啾啾他時,我非常激動,他回覆了一次!

事實:他在大一和大二的時候在高中期間踢足球。德語,法語,荷蘭語,和美國本土(特別是渥太華和波塔瓦托米)血統的OMG,我們都喜歡的樂隊國王萊昂

演員:羅伯特·帕丁森

自述:他出生於5月13日,1986年,在英國倫敦,他喜歡音樂,是一位出色的音樂家,彈奏吉他和鋼琴,當羅伯特15歲時,他開始在巴恩斯劇院擔任業餘戲劇演員,之後, R (2004)(電視)(暮光之城)作爲吉賽爾。

More_Bio:2003年,羅伯特擔任Cedric Diggory在哈利波特與火焰杯(2005)中的角色。他在2003年後期與Mike Newell會面後一週後便獲得了他的職位。之後,他在電影「暮光之城」(2008/I)中飾演Edward Cullen。他的音樂也將在電影中聽到。此外,羅伯特已完成薩爾瓦多達利在小灰燼(2008年)和藝術如何成爲(2008年)即將到來的角色。

原因:古怪的是,當我第一次在「哈利波特」中看到他是Cedric Diggory時,羅伯特帕丁森讓我屏息凝神,但是當我在「黃昏」中將他看作是吸血鬼愛德華卡倫的時候偷了我的心。愛德華隊贏得勝利!我只是喜歡他凌亂的頭髮和濃密的眉毛。

事實:他是一位出色的音樂家,能演奏吉他和鋼琴。他三歲開始上鋼琴課,五歲開始學古典吉他。

這是代碼做插入

String Actor = "", Bio = "", More_Bio = "", Fact ="", Reason = ""; 
while ((it = br.readLine()) != null) { 

    if (it.startsWith("Actor: ")) 
    { 
     it = it.replace("'", "\""); 
     // remove actor 
     it = it.replace("Actor: ", " "); 
     Actor = it; 
     System.out.println(Actor); 
     // ps.setString(1, Actor); 
    } 


    if (it.startsWith("Bio:")) 
    { 
     it = it.replace("'", "\""); 
     // remove actor 
     it = it.replace("Bio: ", " "); 
      Bio = it; 
     System.out.println(Bio); 
    // ps.setString(2, Bio); 
    } 
    if (it.startsWith("More_Bio:")) 
    { 
     it = it.replace("'", "\""); 
     // remove actor 
     it = it.replace("More_Bio: ", " "); 
    More_Bio = it; 
     System.out.println(More_Bio); 
     // ps.setString(3, More_Bio); 
    } 
    if (it.startsWith("Reason:")) 
    { 
     it = it.replace("'", "\""); 
     // remove actor 
     it = it.replace("Reason: ", " "); 
    Reason = it; 
     System.out.println(Reason); 
    //  ps.setString(4, Reason); 
    } 

    if (it.startsWith("Fact:")) 
    { 
     it = it.replace("'", "\""); 
     // remove actor 
     it = it.replace("Fact: ", " "); 
    Fact = it; 
     System.out.println(Fact); 
     // ps.setString(5, Fact); 
    } 


    ps.setString(1, Actor); 
    ps.setString(2, Bio); 
    ps.setString(3, More_Bio); 
    ps.setString(4, Reason); 
    ps.setString(5, Fact); 
    ps.executeUpdate(); 

} 
ps.close(); 
con.close(); 

如果代碼有內環路PS語句,泰勒·洛特納和羅伯特·帕丁森信息插入到數據庫兩次,當我把它拿出來的而循環,只有最後一個,羅伯特帕丁森被插入。泰勒被忽略。

回答

0

您的獲取數據的方法是錯誤的。你想要做的是每次找到演員或生物或任何這樣的關鍵字時執行更新聲明。這是錯誤的,您應該嘗試首先收集所有信息,然後執行更新。

我建議以下方法:

  • 創建POJO並通過while循環填補所有關於POJO演員的信息。在地圖中保持這種(您的密鑰可能是演員的名字

  • 然後通過地圖迭代,檢索來自POJO的信息,每個鍵並創建一個更新語句並執行你的命令。

樣本代碼可能是這樣的:

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Iterator; 

public class TextReader { 

    public static void main(String[] args) { 
     new TextReader().reader(); 
    } 

    public void reader() { 
     BufferedReader br = null; 
     String it; 
     String Actor = "", Bio = "", More_Bio = "", Fact = "", Reason = ""; 

     try { 
      HashMap<String, PersonData> informationMap = new HashMap<String, TextReader.PersonData>(); 
      br = new BufferedReader(new FileReader(new File("textFile.txt"))); 

      while ((it = br.readLine()) != null) { 

       if (it.startsWith("Actor: ")) { 
        it = it.replace("'", "\""); 
        // remove actor 
        it = it.replace("Actor: ", " "); 
        Actor = it; 
//     System.out.println(Actor); 
        // ps.setString(1, Actor); 
       } 

       PersonData dataVO = informationMap.containsKey(Actor) ? informationMap.get(Actor) : new PersonData(); 

       if (it.startsWith("Bio:")) { 
        it = it.replace("'", "\""); 
        // remove actor 
        it = it.replace("Bio: ", " "); 
        Bio = it; 
        // System.out.println(Bio); 
        dataVO.setBio(Bio); 
        // ps.setString(2, Bio); 
       } 
       if (it.startsWith("More_Bio:")) { 
        it = it.replace("'", "\""); 
        // remove actor 
        // it = it.replace("More_Bio: ", " "); 
        More_Bio = it; 
//     System.out.println(More_Bio); 
        dataVO.setMoreBio(More_Bio); 
        // ps.setString(3, More_Bio); 
       } 
       if (it.startsWith("Reason:")) { 
        it = it.replace("'", "\""); 
        // remove actor 
        it = it.replace("Reason: ", " "); 
        Reason = it; 
        dataVO.setReason(Reason); 
        // System.out.println(Reason); 
        // ps.setString(4, Reason); 
       } 

       if (it.startsWith("Fact:")) { 
        it = it.replace("'", "\""); 
        // remove actor 
        it = it.replace("Fact: ", " "); 
        Fact = it; 
        dataVO.setFact(Fact); 
        // System.out.println(Fact); 
        // ps.setString(5, Fact); 
       } 

//    System.out.println(Actor + "\t" + Bio + "\t" + More_Bio + "\t" 
//      + Reason + "\t" + Fact); 
       informationMap.put(Actor, dataVO); 
      } 

      for(String actorName: informationMap.keySet()){ 
       PersonData dataVO = informationMap.get(actorName); 
       System.out.println(actorName); 
        // === Create your preparedstatement heare and execute the update ==== 
      } 
     } catch (Exception exe) { 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException ex) { 
       } 
      } 
     } 
    } 

你的樣品POJO類可能是這個樣子:

/** 
    * Sample Person POJO class 
    */ 
    public class PersonData { 
     private String bio; 
     private String moreBio; 
     private String fact; 
     private String reason; 

     public String getBio() { 
      return bio; 
     } 

     public void setBio(String bio) { 
      this.bio = bio; 
     } 

     public String getMoreBio() { 
      return moreBio; 
     } 

     public void setMoreBio(String moreBio) { 
      this.moreBio = moreBio; 
     } 

     public String getFact() { 
      return fact; 
     } 

     public void setFact(String fact) { 
      this.fact = fact; 
     } 

     public String getReason() { 
      return reason; 
     } 

     public void setReason(String reason) { 
      this.reason = reason; 
     } 
    } 
} 

注意

  • Java命名約定規定變量名稱應以小寫字母開頭。雖然我爲了一致性而遵循了代碼中的內容,但我強烈建議您重構變量名稱

  • 我已經做出了一個基本假設,即您的演員姓名將是唯一的。這就是爲什麼我在這種情況下用它作爲關鍵。如果不是這樣,那麼您可能需要考慮將演員名稱作爲POJO類的一部分,並使用另一個唯一標識符作爲密鑰。

相關問題