多谢各位帮忙,毕竟是新手嘛,希望大家多多包含,按照大家的意思我又改了点,但是还是不能正确显示啊,总是显示“查无此人”啊 public ResultSet queryScore(String id)//接收学生ID,查找学生分数,返回查询结果 { String sql="select * from ai where Que='"+id+"'"; SqlData sd=new SqlData(); ResultSet rs=sd.executeQuery(sql);
} 产生如下异常:sql.data.executeQuery():[Microsoft][ODBC SQL Server Driver][SQL Server]列名 '你 好' 无效。是不是我把s当成列名了? 但我又没感觉是啊,哪位朋友再给看看!
public String queryScore(String id)//接收学生ID,查找学生分数,返回查询结果 { String sql="select * from ai where Que='"+id+"'"; SqlData sd=new SqlData(); ResultSet rs=sd.executeQuery(sql);
我把程序弄上来好了,大家看的能清楚一些 这是查询的那个 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);
你的表名和数据库名都是ai吗? 把SQL语句换成:String sql="select * from [ai].[dbo].[ai] where Que='"+id+"'";
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 sql="select * from ai where Que='"+id+"'";
好像看第一段就发现问题了..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
这一句让我想起了SQL Server,可以我又不知道你的用户名和密码是不是对的,数据源的用户名和密码与数据库的用户名和密码是两回事,两个是没有直接联系的,好多人都把这个当成一回事了,结果数据库就连不上了,另外其它也有问题,你自己好好看看。
1.public String queryScore(String id)这个方法的返回有问题,应该改为
public ResultSet queryScore(String id)
2.id为字符串的时候必须用引号括起来引用 '"+id+"'";建议对于sql语句的错误先将语句在命令行里执行一下试试能不能达到要求
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当成列名了? 但我又没感觉是啊,哪位朋友再给看看!
{
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 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;
}
}
程序: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里没用到就不帖了!
把SQL语句换成:String sql="select * from [ai].[dbo].[ai] where Que='"+id+"'";
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;
}
}这样没有什么错现在有什么错