2012-07-20 83 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类的一部分,并使用另一个唯一标识符作为密钥。