首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库ps语句插入

数据库ps语句插入
EN

Stack Overflow用户
提问于 2012-07-21 01:51:34
回答 1查看 72关注 0票数 0

尝试将这样的文件插入到数据库中

演员:泰勒·洛特纳

简介:泰勒·丹尼尔·洛特纳出生在密歇根州的大急流城,父母是黛博拉和丹尼尔·洛特纳。他和妹妹玛凯娜在密歇根州哈德逊维尔一个温文尔雅的罗马天主教徒家庭长大。六岁时,泰勒开始在法比亚诺的空手道学校学习功夫,他和他的家人很快就注意到了他在这项运动中独特的天赋。他很快被邀请与七次世界空手道冠军Michael Chaturantabut (又名Mike Chat)一起训练,在8岁时,他被要求代表他的国家参加12年的世界空手道协会,在那里他成为了初级世界空手道和武器冠军,赢得了三枚金牌。2003年,泰勒继续在拳击赛道上蓬勃发展,他在纳斯卡的黑带公开形式,音乐武器,传统武器和传统形式中排名世界第一,在12岁时,他成为了三次青少年世界冠军。

More_Bio:然而,除了对功夫的热爱之外,泰勒在七岁时很快就对表演产生了热爱,当时他的从事演艺界的功夫教练鼓励他参加汉堡王广告的试镜。虽然他没有成功,但他非常享受这段经历,以至于他告诉他的父母,他想从事表演事业。很快,他和他的家人从密歇根的家往返于加利福尼亚州,这样泰勒就可以定期试镜表演角色。泰勒十岁时,随着频繁的旅行和机票价格开始变得不堪重负,他的家人做出了重要决定,搬到了洛杉矶,在那里泰勒将有机会全职参加电影、电视和广告的试镜。

原因:这是一个帅气的青少年偶像!我爱他在“曙光之城”系列中扮演的雅各布·布莱克!他是我见过的最帅的男人之一。当我发推特给他的时候,我非常兴奋,他回复了一次!

事实:他在高中一年级和二年级时踢过橄榄球。他有德国人、法国人、荷兰人和美洲原住民(特别是渥太华和波塔瓦托米)的血统。天哪!我们都喜欢里昂王者乐队。

演员:罗伯特·帕丁森

简介:他于1986年5月13日出生于英国伦敦。他喜欢音乐,是一位优秀的音乐家,既会弹吉他,也会弹钢琴。当罗伯特15岁时,他开始在巴恩斯剧团的业余戏剧中表演。之后,他在《指环王》(2004) (电视剧)(《黄昏王国》)中饰演吉赛尔。

More_Bio: 2003年,罗伯特在“哈利波特与火焰杯”(2005)中饰演塞德里克·迪戈里。一周后,他在2003年底与迈克·纽威尔( Mike Newell )会面后获得了这个职位。自那以后,他一直在备受期待的电影《暮光之城》(2008/I)中饰演爱德华·卡伦。他的音乐也将在电影中听到。此外,罗伯特还完成了即将上映的“小骨灰”(2008)和“艺术是怎样”(2008)中的角色。

原因:奇怪的是,当我第一次看到罗伯特·帕丁森在“哈利波特”中饰演塞德里克·迪戈里时,他让我屏住了呼吸,但当我看到他在“黎明之城”中饰演爱德华·卡伦时,他却夺走了我的心。爱德华队的胜利!!我就是喜欢他凌乱的头发和浓密的眉毛。

事实::他是一位优秀的音乐家,吉他和钢琴都会弹。他三岁开始学习钢琴,五岁开始学习古典吉他。

这是执行插入的代码

代码语言:javascript
复制
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语句,则Taylor Lautner和Robert Pattinson的信息将被插入数据库两次,当我将其从while循环中取出时,只插入最后一个,Robert Pattinson。泰勒将被忽略。

EN

回答 1

Stack Overflow用户

发布于 2012-07-21 02:12:51

您获取数据的方法是错误的。您要做的是在每次找到参与者或bio或任何类似的关键字时执行一条update语句。这是错误的,您应该首先尝试收集所有信息,然后执行更新。

我建议采取以下方法:

  • 创建一个POJO,并通过while循环在POJO中填充有关参与者的所有信息。在地图中进行维护(您的键可能是参与者的名称)

然后,

  • 遍历映射,从POJO中检索每个键的信息,创建一个update语句并执行命令。

示例代码可能如下所示:

代码语言:javascript
复制
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类可能如下所示:

代码语言:javascript
复制
    /**
     * 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类的一部分,并使用另一个唯一标识符作为密钥。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11584476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档