2012-04-05 62 views
0

我有一個小問題,我正在做項目,並且我正在將數據從客戶端發送到服務器,服務器將它發送到mysql數據庫。 我在客戶端應用程序中有客戶端和管理標籤, 在客戶端選項卡中,我鍵入用戶名並連接到服務器,此用戶名正在發送到服務器,服務器保存到表用戶的數據庫中。 在「管理」選項卡(客戶端應用程序端)中,我通過連接來修改數據庫中的某些數據並將新數據添加到數據庫。 我的問題是:一步一步 1.我鍵入用戶名,按連接,用戶名字符串正在發送到服務器並保存在mysql用戶表中 2.接下來,我轉到admin選項卡,我想添加一些數據要插入到MySQL(它是問題的字符串),所以我在textField中鍵入該問題,然後按添加和問題是服務器讀取它作爲用戶名,並將其插入到用戶表,而不是問題表。如何防止將相同的數據從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

是啊,但這會把(例如)名稱:鮑勃到列用戶的數據庫,並將有一個問題,閱讀它後來顯示在適當的形式,或者在閱讀時有什麼辦法刪除「名稱:」並只顯示「鮑勃」?或者也許不同的解決方案?我正在學java,所以我不知道所有 – takeit 2012-04-05 22:46:39

+0

也修正了,用subString去掉「Name:」文本,謝謝 – takeit 2012-04-12 19:26:41

0

是否缺少:

out.println(name); 

之前打印標題?

+0

是我錯過了,但我不想用戶名從管理員添加選項卡,但從客戶端選項卡,當我會放在那裏失蹤out.println(名稱);它會添加兩次用戶名到分貝,從客戶端標籤和後來從管理選項卡 – takeit 2012-04-05 22:09:10

相關問題