如何防止从textField向数据库添加相同的数据?

时间:2012-04-05 22:01:15

标签: java mysql

我有一点问题,我正在制作项目,我正在从客户端向服务器发送数据,服务器将其发送到mysql数据库。 我在客户端应用程序中有客户端和管理标签, 在客户端选项卡中,我键入用户名并连接到服务器,此用户名将发送到服务器,服务器保存到表用户的数据库中。 在管理选项卡(客户端应用程序端)中,我连接以修改数据库中的一些数据并将新数据添加到数据库。 我的问题是:一步一步 1.我输入用户名,按连接,用户名字符串正在发送到服务器并保存在表用户的mysql中 2.接下来,我转到管理选项卡,我想添加一些要插入mysql的数据(这是字符串中的问题)所以我在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 + "')");

如何让它运作? 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

你错过了吗?

out.println(name);

在打印标题之前?

答案 1 :(得分:0)

也许您应该将您的客户端服务器协议从依赖于消息的顺序更改为更明确?可能会让它更强大。

也许你应该发送这样的行:

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

然后您可以按任何顺序接收字段..