将数据库查询结果体现在netbeans表格里
}
public Score(String Sno) {
initComponents();
//获取Sno
initComponents();
conn=DBCon();
this.Sno = Sno;//获取Sno
System.out.println(Sno);
showTableData();
}
//在表格中显示数据的方法
void showTableData(){
data=queryData("select Cyear+Cterm,Course.Cno,Course.Cname,Ccredit,Grade from Course,SC where Course.Cno=SC.Cno order by Cyear+Cterm");
//准备表头
title.add("上课学期");
title.add("课程编号");
title.add("课程名称");
title.add("学分");
title.add("成绩");
//设置表格模式
jTable1.setModel(dtm);
dtm.setDataVector(data, title);
lockText();
}
//锁定表格内容不可更改
public void lockText(){
jTable1.setEnabled(false);
}
//连接数据库
public Connection DBCon(){
try{
java.lang.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433; databaseName=SystemDB";
conn = DriverManager.getConnection(url,"sa","1234");
System.out.println("数据库连接成功!");
return conn;
}catch(ClassNotFoundException ex){
ex.printStackTrace();
System.out.println("数据库驱动程序找不到!");
return null;
}catch(SQLException ex){
ex.printStackTrace();
System.out.println("数据库连接失败!");
return null;
}
}
//通过该方法获取数据库中的数据
public Vector queryData(String sql){
try{
//调用上面的JDBC链接数据库的方法链接数据库
//创建会话对象
Statement stmt = conn.createStatement();
//执行SQL语句返回结果集
ResultSet rs = stmt.executeQuery(sql);
Vector data=new Vector();
ResultSetMetaData rsm = rs.getMetaData();//ResultSetMetaData rsm 此对象专门用于获取表结构的相关信息.检索此ReasulSet对象的列的数量、类型和属性(即结果集的。。)
int count = rsm.getColumnCount(); //获得结果集列的数量
while(rs.next()){//还有下一条记录吗
Vector line = new Vector(); //定义保存一条数据(一行数据)的vector
for(int i = 1;i<=count;i++){
line.add(rs.getString(i));//rs.getString(i) :为获取结果集当前行的第i列数据。
}
data.add(line);
}
// rs.close();
// stmt.close();
// conn.close();
return data;
}catch(SQLException ex){
System.out.println("数据访问失败");
ex.printStackTrace();
return null;
}
}
按查询按钮 表格里无内容
看下查询数据库有没有数据。
select Cyear+Cterm,Course.Cno,Course.Cname,Ccredit,Grade from Course,SC where Course.Cno=SC.Cno order by Cyear+Cterm
这个查询语句用工具Navicat连接查询一下是否有数据?
首先在dtm.setDataVector(data, title);代码给表格设置数据之前将data的数据打印一下,看看是不是有数据,其次,f12打开控制台,看看有没有报语法错误
看后端是否有数据,如果又看前端解析是否正确
解决啦 sql语句写错了