0

このようなファイルをデータベースに挿入しようとしています

俳優:テイラー・ロートナー

バイオ:テイラー ダニエル・ロートナーは、ミシガン州グランドラピッズで両親のデボラとダニエル・ロートナーに生まれました。彼と妹のマケナは、ミシガン州ハドソンビルの行儀の良いローマ カトリックの家庭で育ちました。6 歳のとき、テイラーはファビアーノの空手学校で格闘技の勉強を始め、家族とともに、このスポーツに対する彼のユニークで天性の才能にすぐに気付きました。彼はすぐに 7 度の世界​​空手チャンピオン、マイケルの元でトレーニングするよう招待されました。 Chaturantabut (別名マイク チャット) であり、8 歳のとき、彼は 12 年間、世界空手協会の部門の下で彼の国を代表するように求められ、そこで彼はジュニア世界フォームと武器のチャンピオンになり、3 つの金メダルを獲得しました. 2003年、テイラーはマーシャル アーツ サーキットで活躍し続け、NASKAで世界一にランクされた」

More_Bio: しかし、格闘技への愛情に加えて、テイラーは 7 歳のときに演技への愛情を急速に高めました。これは、ショー ビジネスに携わっていた格闘技のインストラクターが彼に小さな出演のオーディションを受けるよう勧めたときでした。バーガーキングのコマーシャル。彼は失敗しましたが、その経験をとても楽しんだので、両親に演技のキャリアを追求したいと言いました. すぐに、彼と彼の家族はミシガン州の自宅とカリフォルニア州を行き来するようになり、テイラーは定期的に演技のオーディションを受けられるようになりました。テイラーが 10 歳のとき、頻繁な旅行や航空運賃が手に負えなくなり始めたとき、彼の家族は、映画、テレビ、コマーシャルのオーディションをフルタイムで受けられるという利点があるロサンゼルスに引っ越すという重大な決定を下しました。

理由:これは1つのハンサムな10代のアイドルです!「トワイライト」シリーズのジェイコブ・ブラック役で大好きでした!彼は私が今まで見た中で最もハンサムな男の 1 人です。私が彼にツイートしたとき、私はとても興奮していました。

事実: 彼は高校 1 年生と 2 年生の間にサッカーをしました。彼はドイツ人、フランス人、オランダ人、ネイティブ アメリカン (特にオタワとポタワトミ) の血を引いています。ああ、神様!私たちは二人とも Kings of Leon というバンドが好きです。

俳優:ロバート・パティンソン

略歴:1986年5月13日、イギリス・ロンドン生まれ。彼は音楽を楽しみ、ギターとピアノの両方を演奏する優れたミュージシャンです。ロバートが 15 歳のとき、彼はバーンズ シアター カンパニーでアマチュア演劇に出演し始めました。その後、彼は指輪の呪い (2004) (TV) (トワイライトの王国) のようなスクリーンの役割を Giselher として果たしました。

More_Bio: 2003 年、ロバートは『ハリー・ポッターと炎のゴブレット』(2005) でセドリック・ディゴリー役を演じました。彼は、2003年後半にマイク・ニューウェルに会った後、1週間後に彼の役割を果たしました。それ以来、彼は待望の映画「トワイライト」(2008 / I)でエドワード・カレンとしてキャストされました。彼の音楽も映画の中で聴かれます。さらに、Robert は、Little Ashes (2008) と Art in How to Be (2008) で Salvador Dalí としての次の役割を完了しました。

理由:風変わりなロバート・パティンソンは、「ハリー・ポッター」でセドリック・ディゴリーとして初めて彼を見たときは息を呑んだが、「トワイライト」でヴァンパイアのエドワード・カレンとして彼を見たとき、私の心を盗んだ. チーム・エドワード・フォー・ザ・ウィン!! 私は彼のボサボサの髪と太い眉毛が大好きです。

事実: : 彼は優れた音楽家で、ギターとピアノの両方を演奏します。3歳でピアノ、5歳でクラシックギターを習い始める。

これは挿入を行うコードです

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 の情報がデータベースに 2 回挿入されます。while ループから取り出すと、最後の 1 つだけ Robert Pattinson が挿入されます。テイラーは無視されます。

4

1 に答える 1

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の命名規則では、変数名は小文字で始める必要があると規定されています。一貫性を保つためにコードに含まれている内容に従いましたが、変数名をリファクタリングすることを強くお勧めします。

  • 私はあなたの俳優の名前がユニークであるという1つの基本的な仮定をしました。そのため、今回はキーとして使用しました。これが当てはまらない場合は、アクター名をPOJOクラスの一部として使用し、別の一意の識別子をキーとして使用することを検討してください。

于 2012-07-20T18:12:51.283 に答える