楼主还用GUI啊?
换了吧,
很慢的,用别的把,
JDBC!

解决方案 »

  1.   

    Que为varchar
    这个改一下
    String sql="select * from ai where Que='"+id+"'";
      

  2.   

    我晕
    好像看第一段就发现问题了..public String queryScore(String id)
        {
         String sql="select * from ai where Que="+id;
         SqlData sd=new SqlData();
         ResultSet rs=sd.executeQuery(sql);
    return rs;
    }
    }难道你的编译器没报错吗?返回的是ResultSet,定义的是String
      

  3.   

    SQL语句加不加单引号要看你的ID是什么类型的!!(这个自己看一下)不知道你的程序报什么错,将SQL语句输出来,到数据库的查询分析器中执行一下!
      

  4.   

    conn=DriverManager.getConnection(sConnStr,"sa","");    
    这一句让我想起了SQL Server,可以我又不知道你的用户名和密码是不是对的,数据源的用户名和密码与数据库的用户名和密码是两回事,两个是没有直接联系的,好多人都把这个当成一回事了,结果数据库就连不上了,另外其它也有问题,你自己好好看看。
      

  5.   

    同意楼上几位的说法,两个明显错误:
    1.public String queryScore(String id)这个方法的返回有问题,应该改为
    public ResultSet queryScore(String id)
    2.id为字符串的时候必须用引号括起来引用 '"+id+"'";建议对于sql语句的错误先将语句在命令行里执行一下试试能不能达到要求
      

  6.   

    多谢各位帮忙,毕竟是新手嘛,希望大家多多包含,按照大家的意思我又改了点,但是还是不能正确显示啊,总是显示“查无此人”啊
    public ResultSet queryScore(String id)//接收学生ID,查找学生分数,返回查询结果
        {
         String sql="select * from ai where Que='"+id+"'";
         SqlData sd=new SqlData();
         ResultSet rs=sd.executeQuery(sql);
     
    String score=null;
      try{
           while(rs.next())
           {
           score=rs.getString("Ans");
           }
           }catch(Exception e){}
          if(score==null)
          {
          return "查无此人!";
          }
          else{
          return score;
         }
        
          }
    产生如下异常:sql.data.executeQuery():[Microsoft][ODBC SQL Server Driver][SQL Server]列名 '你
    好' 无效。是不是我把s当成列名了? 但我又没感觉是啊,哪位朋友再给看看!
      

  7.   

    public String queryScore(String id)//接收学生ID,查找学生分数,返回查询结果
        {
         String sql="select * from ai where Que='"+id+"'";
         SqlData sd=new SqlData();
         ResultSet rs=sd.executeQuery(sql);
     
    String score=null;
      try{
           while(rs.next())
           {
           score=rs.getString("Ans");
           }
           }catch(Exception e){}
          if(score==null)
          {
          return "查无此人!";
          }
          else{
          return score;
         }
        
          }
    再有问题再说
      

  8.   

    各位不是吧,上边的让我用public ResultSet queryScore(String id) 后面的让我用public String queryScore(String id) 但是都是不好使啊!
      

  9.   

    我把程序弄上来好了,大家看的能清楚一些
    这是查询的那个
    import java.sql.*;
    public class Student

        public String queryScore(String id)
        {
         String sql="select * from ai where Que='"+id+"'";
         SqlData sd=new SqlData();
         ResultSet rs=sd.executeQuery(sql);
     
    String score=null;
      try{
           while(rs.next())
           {
           score=rs.getString("Ans");
           }
           }catch(Exception e){}
          if(score==null)
          {
          return "查无此人!";
          }
          else{
          return score;
         }
        
          }
    }
    这是数据库的那个
    import java.sql.*;
    /*数据操作类*/
    public class SqlData
    {
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    String sConnStr="jdbc:odbc:ai";//建立一个ODBC数据源叫ai

    Connection conn=null;
    ResultSet rs=null;
    public SqlData()//对象初始化时,连接数据库
    {
    try{
    Class.forName(sDBDriver);                   //加载JDBC-ODBC桥程序
    }
    catch(java.lang.ClassNotFoundException e)
    {
    System.out.println("sql_data()"+e.getMessage());
    }
    }



    public ResultSet executeQuery(String sql)//执行查询操作,返回记录集对象
    {
    rs=null;
    try{
    conn=DriverManager.getConnection(sConnStr,"sa","");    //连接数据库ai
    Statement stmt=conn.createStatement();                 //此接口为特定的容器
    rs=stmt.executeQuery(sql);                             //
    }
    catch(SQLException ex)
    {
    System.err.println("sql.data.executeQuery():"+ex.getMessage());
    }
    return rs;
    }
    }
      

  10.   

    现在的这个就是我想弄的那个了,一个网络聊天的东东,想加个自动回复的功能,在数据库查询Que,然后返回Ans把别人传过来的信息变成String 的s 然后查询 最后返回到str里 再传过去 大概是这样的但是现在还没到传出去的部分,先请大家帮看看数据查询的部分,先谢了!
    程序:import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import javax.swing.*;
    import java.io.*;
    import java.sql.*;class Chat1 extends Frame {
    List lst = new List(6);
    TextField tfIP = new TextField(15);
    TextField tfData = new TextField(20);
    Button b = new Button("取消机器人");
    DatagramSocket ds = null;

    public Chat1() {
    try{
    ds=new DatagramSocket(3000);
           }
           catch(Exception e)
           {
            e.printStackTrace();
           }
    this.add(lst,"Center");
    Panel p =new Panel();
    this.add(p,"South");

    p.setLayout(new BorderLayout());
    p.add(tfIP,"West");
    p.add(b,"Center");
    p.add(tfData,"East");
    setSize(400, 400);
    setTitle("Chat1");
    setVisible(true);

    b.addActionListener(new ActionListener()
       {
        public void actionPerformed(ActionEvent e)
        {
        ds.close();
          dispose();
        Chat chat=new Chat();
        }
        });


    new Thread(new Runnable()
     {
      public void run()
      {
      byte buf[] = new byte[1024];
      DatagramPacket dp = new DatagramPacket(buf,1024);
      while(true)
      {
      try{
         ds.receive(dp);
         lst.add(new String(buf,0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+ dp.getPort(),0);
             String s=new String(buf,0,dp.getLength());
             lst.add(s);
             Student st=new Student();
             String str=st.queryScore(s);
              lst.add(str);
              
              }
              catch(Exception e)
              {
               if(!ds.isClosed())
               {
               e.printStackTrace();
                   }
              }
           
           }
       }
     
      }).start();

    tfData.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
         byte [] buf;
         buf = tfData.getText().getBytes();
         try{
              DatagramPacket dp=new DatagramPacket(buf,buf.length,
               InetAddress.getByName(tfIP.getText()),3000);
                ds.send(dp);
             } 
             catch(Exception ex)
             {
              ex.printStackTrace();
              }
         tfData.setText("");
        
        }
    });

    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    ds.close();
    dispose();
    System.exit(0);
    }
    });
    }
    }
    只是部分,因为就这部分用数据查询了Chat里没用到就不帖了!
      

  11.   

    你的表名和数据库名都是ai吗?
    把SQL语句换成:String sql="select * from [ai].[dbo].[ai] where Que='"+id+"'";
      

  12.   

    import java.sql.*;
    public class Student

        public String queryScore(String id)
        {
         String sql="select * from ai where Que='"+id+"'";
         SqlData sd=new SqlData();
         ResultSet rs=sd.executeQuery(sql);
     
    String score=null;
      try{
           while(rs.next())
           {
           score=rs.getString("Ans");
           }
           }catch(Exception e){}
          if(score==null)
          {
          return "查无此人!";
          }
          else{
          return score;
         }
        
          }
    }
    这是数据库的那个
    import java.sql.*;
    /*数据操作类*/
    public class SqlData
    {
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    String sConnStr="jdbc:odbc:ai";//建立一个ODBC数据源叫ai

    Connection conn=null;
    ResultSet rs=null;
    public SqlData()//对象初始化时,连接数据库
    {
    try{
    Class.forName(sDBDriver);                   //加载JDBC-ODBC桥程序
    }
    catch(java.lang.ClassNotFoundException e)
    {
    System.out.println("sql_data()"+e.getMessage());
    }
    }



    public ResultSet executeQuery(String sql)//执行查询操作,返回记录集对象
    {
    rs=null;
    try{
    conn=DriverManager.getConnection(sConnStr,"sa","");    //连接数据库ai
    Statement stmt=conn.createStatement();                 //此接口为特定的容器
    rs=stmt.executeQuery(sql);                             //
    }
    catch(SQLException ex)
    {
    System.err.println("sql.data.executeQuery():"+ex.getMessage());
    }
    return rs;
    }
    }这样没有什么错现在有什么错
      

  13.   

    个人自己发现错误了,郁闷啊!把*改成Ans就行了 郁闷啊!