2012-04-05 1 views
0

私は少し問題があります、私はプロジェクトを作っており、クライアントからサーバーにデータを送ります、サーバーはmysqlデータベースにそれを送ります。 クライアントアプリケーションにクライアントと管理のタブがあります。 クライアントのタブで、ユーザー名を入力してサーバーに接続すると、このユーザー名がサーバーに送信され、サーバーの保存はテーブルユーザーのデータベースに保存されます。 管理タブ(クライアントアプリケーション側)では、データベースから一部のデータを変更し、データベースに新しいデータを追加するために接続します。 私の問題は次のとおりです。 1. usernameを入力し、connectを押して、ユーザー名文字列をサーバーに送信し、テーブルユーザーのmysqlに保存します。 2.次に、管理タブに行きます。 mysqlに挿入されるデータ(文字列内の質問)ですから、その質問をtextFieldに入力してaddを押してください。問題はサーバーがユーザー名として読み取り、質問表ではなくユーザーの表に挿入することです。ここで同じデータをtextFieldからデータベースに追加しないようにするにはどうすればよいですか?

は私がユーザ名を送信するクライアントからのコードです:ここでは

String name = client.nameField.getText(); 
     out = new PrintWriter (os, true); 
     out.println(name); 

は、私がデータを送信する管理者]タブからコードです:

DataOutputStream os = new DataOutputStream (socket.getOutputStream()); 

       String name = client.nameField.getText(); 
       String title = Configuration.titleField.getText(); 
       String question = Configuration.questionField.getText(); 
       String answer1 = Configuration.answer1Field.getText(); 
       out = new PrintWriter (os, true); 

       out.println(title); 
       out.println(question); 
       out.println(answer1); 

そしてここでは、レシーブデータでコードですサーバー側:

while(RunThread){ 

      String name; 
      name = in.readLine(); 


      st.execute("INSERT INTO "+db+" .poll_users (name) VALUES ('" + name + "')"); 

      String title; 
      title = in.readLine(); 
      if(title!=null) 
      st.execute("INSERT INTO "+db+" .poll_titles (title) VALUES ('" + title + "')"); 

      String question; 
      question = in.readLine(); 
      if(question!=null) 
      st.execute("INSERT INTO "+db+" .poll_questions (question) VALUES ('" + question + "')"); 

      String answer1; 
      answer1 = in.readLine(); 
      if(answer1!=null) 
      st.execute("INSERT INTO "+db+" .poll_answers (answer) VALUES ('" + answer1 + "')"); 

どのように動作させるには?任意のヘルプ

答えて

0

メッセージの順序に依存しないようにクライアントサーバーのプロトコルを変更する必要がありますか?より頑強にすることができます。

たぶん、あなたはこのような行送信する必要があります:あなたはどのような順序でフィールドを受け取ることができ

out.println("Name:" + name); 
out.println("Title:" + title); 
out.println("Question" + question); 
out.println("Answer" + answer1); 

を...

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、適切なフォーム、または読み取り中に何らかの方法がある場合は、「名前:」を削除し、「Bob」のみを表示しますか?多分異なる解決策ですか?私はjavaを学んでいるので、私はすべてを理解していない – takeit

+0

も、 "名前:"テキストを取り除くためにsubStringを使用しました。ありがとう – takeit

0

ため おかげで、あなたが欠落しています:

out.println(name); 

タイトルを印刷する前に?

+0

はい、私はそれが欠けていますが、私はユーザ名はadminから追加したくありませんタブが、クライアントのタブから、私はそこに行方不明を置く.println(名前);クライアントのタブから後で管理タブの – takeit

関連する問題