我编了一个简单的页面程序,是通过在框中输入的号码来查询该号码用户的相关资料,并显示在jtable中
客户端代码如下:
private void noFind_ActionPerformed(ActionEvent evt) 
    {  
        out.println("nofind");
        out.println(icqField.getText().trim());
                          
        try
        {             
            String str = "";     
            int theirjicq,picinfo,sta;
            do
            {
                str = in.readLine();
                if(str.equals("over"))  break;
                else if(!str.equals("over"))
                {                       
                    nickname.add(str);
                    theirjicq=Integer.parseInt(in.readLine());
                    icq.add(new Integer(theirjicq));
                    sex.add(in.readLine());
                    picinfo=Integer.parseInt(in.readLine());
                    headpicture.add(new Integer(picinfo));
                    ip.add(in.readLine());
                    email.add(in.readLine());
                    city.add(in.readLine());
                    infomation.add(in.readLine());
                    sta=Integer.parseInt(in.readLine());
                    status.add(new Integer(sta));
                }
            }while(!str.equals("over"));
            
            vector.removeAllElements();
            tm.fireTableStructureChanged();
            
            for(int i = 0; i < nickname.size(); i++)
            {
                Vector rec_vector = new Vector();
                Integer len = (Integer) headpicture.get(i);
                ImageIcon f = new ImageIcon(pictures[len]);
            
                rec_vector.addElement(nickname.get(i));
                rec_vector.addElement(f);    
                rec_vector.addElement(city.get(i));
                vector.addElement(rec_vector);
            }
            tm.fireTableStructureChanged();
        }
        catch(IOException ioe){System.out.println("false1");}
                //catch(NullPointerException ne) {System.out.println("aaa");}
        
        try
        {
            
            
        }
        catch(Exception e)
        {
            //System.out.println("you have a false");
            e.printStackTrace();
        }
    }

解决方案 »

  1.   

    服务器短的代码如下:
    else if(str.equals("nofind"))
                    {
                     try
                        { 
                 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                            Connection c3=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; databaseName=TEST", "sa","111111");
                            
                            //以下连接数据库,并且返回其他用户的呢称,性别,籍贯,个人资料等信息
                            String find="select nickname,icqno,sex,picture,ip,email,city,information,status from icq where icqno = ?";
                            String icqnumber = in.readLine();
                            int g=Integer.parseInt(icqnumber);
                            PreparedStatement prepare3 = c3.prepareCall(find);
                            prepare3.clearParameters();
                            prepare3.setInt(1,g);
                            ResultSet result = prepare3.executeQuery();
                            boolean y;
                            while(result.next())
                            {
                                out.println(result.getString("nickname"));
                                out.println(result.getInt("icqno"));                     
                                out.println(result.getString("sex"));
                                out.println(result.getInt("picture"));
                                out.println(result.getString("ip"));
                                out.println(result.getString("email"));
                                out.println(result.getString("city"));
                                out.println(result.getString("information"));
                                y = result.getBoolean("status");  //返回用户是否在线的布尔值。
                                if (y){out.println("1");}
                                else {out.println("0");}
                            }//while end
                            out.println("over");
       
                            c3.close();result.close();          
                     }
                     catch (Exception e){e.printStackTrace();System.out.println("false!");}
                        //socket.close();
                    }
      

  2.   

    可是现实的结果是:
    我输入1,显示一行结果,输入2,显示两行结果,1和2的结果都显示在JTable中了。但是同样的model,如果我不连接服务器,而只是调用本地的服务器时,就可以达到我想要的效果。
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; databaseName=TEST", "sa","111111");
    statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    String a= icqField.getText().trim();
    //String sql = "select * from studentbase where student_number =" + a;
                            String sql = "select * from icq where nickname = '" + a + "'";
    ResultSet rs = statement.executeQuery(sql);
    content.removeAllElements();
    tm.fireTableStructureChanged();

    while(rs.next())
    {
    Vector rec_vector = new Vector();
                                   
                                    Integer len = (Integer) rs.getInt("picture");
                                    ImageIcon f = new ImageIcon(pictures[len]);
                
                                    rec_vector.addElement(rs.getString("nickname"));
                                    rec_vector.addElement(f);    
                                    rec_vector.addElement(rs.getString("city"));
                                    
    content.addElement(rec_vector);
    }
    tm.fireTableStructureChanged();
    rs.close();