Bluebluesea
发贴: 6
积分: 0
|
于 2007-04-02 09:02
是关于数据库连接问题的,请大家帮帮忙,我实在弄不出来了,JAVA源程序是这样的:import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; import java.sql.*; import javax.swing.table.*; import javax.swing.tree.*; public class classBrowse extends JFrame implements TreeSelectionListener{ Statement stmt; ResultSet rs,rs1; DefaultTableModel dtm; String[] title; JTree tree; JTable table; DefaultTreeModel treeModel=null; JScrollPane scroll1,scroll2; JSplitPane splitPane; public classBrowse(){ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(Exception e){e.printStackTrace();} try{ Connection con=DriverManager.getConnection("jdbc:odbc:xsgl"); Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); DefaultMutableTreeNode root=new DefaultMutableTreeNode("专业"); treeModel=new DefaultTreeModel(root); initTree(root,0); tree=new JTree(treeModel); scroll1=new JScrollPane(tree); tree.addTreeSelectionListener(this); rs=stmt.executeQuery("select classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名 from xsda,classclass where xsda.classID=classclass.id"); ResultSetMetaData dbmd=rs.getMetaData(); title=new String[dbmd.getColumnCount()]; for(int i=1;i<=dbmd.getColumnCount();i++) title[i-1]=dbmd.getColumnName; dtm=new DefaultTableModel(null,title); table=new JTable(dtm); scroll2=new JScrollPane(table); initTable(); splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scroll1,scroll2); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(200); this.getContentPane().add(splitPane,null); }catch(SQLException e){ System.out.println; } setTitle("分类查询学生信息"); setSize(500,400); setVisible(true); } void initTree(DefaultMutableTreeNode root,int id){ DefaultMutableTreeNode node=null; try{ Connection con=DriverManager.getConnection("jdbc:odbc:xsgl"); Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=stmt.executeQuery("select * from classclass where parent="+id); while(rs.next()){ int nno=rs.getInt("id"); String nname=rs.getString("name").trim(); node=new DefaultMutableTreeNode(nname); treeModel.insertNodeInto(node,root,root.getChildCount()); initTree(node,nno); } }catch(Exception e){} finally{ try{ rs.close(); }catch(Exception e){} } } public void valueChanged(TreeSelectionEvent e){ JTree tree=(JTree)e.getSource(); DefaultMutableTreeNode selectionNode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); String name=((String)selectionNode.getUserObject()); String sql="select classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名 from xsda,classclass where xsda.classID=classclass.id"; if(!name.equals("专业")) sql=sql+"and classID in (select id from classclass where rtrim(ltrim(str(id)))like (select ltrim(rtrim(str(id)))+'%'from classclass where rtrim(ltrim(name))='"+name+"')"; try{ rs=stmt.executeQuery(sql); initTable(); }catch(Exception ee){} } void initTable(){ dtm.setRowCount(0); try{ rs.beforeFirst(); while(rs.next()){ Vector v1=new Vector(); for(int i=1;i<=title.length;i++) v1.addElement(rs.getString); dtm.addRow(v1); } }catch(SQLException e){e.printStackTrace();} dtm.fireTableStructureChanged(); } public static void main(String[] args) { new classBrowse(); }
} 配置了数据源和数据库的名称一样xsgl 此数据库里面还有两张表:表xsda有字段no,classID,name,sex,birthDate,speciality,address,isMember,resume,picture 表classclass有字段:id,parent,name 请大家帮忙调试一下,非常感谢
|