哪位热心人,可以建立一个上面的数据库,这个数据库很简单的,可能只需要五分钟就能搞定,将代码COPY一份,在计算机上运行一下,给我找找原因.
import java.sql.*;
import java.awt.event.*;
import javax.swing.*;
class sqlTest
{
public static void main(String[] args)
{
JFrame jf=new JFrame( "The system of Student informaton ");
jf.setSize(600,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp=new JPanel();
JLabel jl=new JLabel( "Please input student 's IDnumber ");
final JTextField jtf=new JTextField(15);
final JTextArea jta=new JTextArea();
JButton jb=new JButton( "Select ");
jf.getContentPane().add(jp, "North ");
jf.getContentPane().add(jta, "Center ");
jf.getContentPane().add(jb, "South ");
jp.add(jl);
jp.add(jtf);
jf.setVisible(true);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
}
catch(ClassNotFoundException ce)
{
ce.printStackTrace();
//System.out.println( "my a ClassNotFoundException wrong ");
}
try
{
conn=DriverManager.getConnection( "jdbc:odbc:test: ");
stmt=conn.createStatement();
String strNumber=jtf.getText();
String strSql= "select * from grade where StuNumber=strNumber ";
rs=stmt.executeQuery(strSql);
String strline=System.getProperty( "line.separator ");
while(rs.next())
{
jta.append(rs.getString( "学号 "));
jta.append(strline);
jta.append(rs.getString( "姓名 "));
jta.append(strline);
jta.append(rs.getString( "语文 "));
jta.append(strline);
jta.append(rs.getString( "数学 "));
jta.append(strline);
jta.append(rs.getString( "英语 "));
}
}
catch(SQLException se)
{
se.printStackTrace();
//System.out.println( "my a executeQueryException wrong ");
}
finally
{
try
{
conn.close();
stmt.close();
}
catch(SQLException sqe)
{
sqe.printStackTrace();
//System.out.println( "my connectionException wrong ");
}
}
}
});
}
}
后台数据库为sqlserver 2000,在JDK1.5中运行时总是提示找不到列名StrNumber,
数据库为FirData 的描述名为test,
表grade 中有五个字段:StuNumber,姓名,语文,数学,英语.
[解决办法]
jta.append(rs.getString( "学号 "));
你的数据库表中并没有 "学号 "这个列啊??? 你建立的是StuNumber..
给你两条建议:
1. 数据库表名和列名都不要用中文, 现在就把数据库改过来
2. rs.getString(columnName), 也可以使用rs.getString(index), index是列号1, 2, 3, 4, 5
取出数据库的顺序必须与数据表列(select语句)的顺序一致, 否则会出问题
[解决办法]
楼上的有道理
数据库中的内容和你rs获取的内容不一致
会报错的
[解决办法]
数据库的列名最好都大写,写程序如果按照规范来会减少很多不必要的麻烦~
[解决办法]
conn=DriverManager.getConnection( "jdbc:odbc:test: ");
-----------------------------------------------------
这句没错么?test后面多了个冒号。
[解决办法]
uppp