跟胖刘老师学习java/j2ee技术--8 跟我学JAVA----自动生成Schema
java吧
全部回复
仅看楼主
level 6
胖刘老师 楼主
import java.awt.* ;import javax.swing.* ;import java.sql.* ;import java.awt.event.*;import java.util.EventListener;import java.util.* ;import javax.swing.event.*;import java.io.* ;public class MyXSD1 extends JFrame implements ActionListener, ListSelectionListener {JComboBox c_database = new JComboBox() ;JList l_table = new JList() ;JPanel rightPanel = new JPanel() ;MyXSD1() { this.setSize(300 , 400) ; //new组件 JButton b = new JButton("生成") ; //填充c_database的内容 try { Connection cn = this.getConnection("master") ; Statement st = cn.createStatement() ; ResultSet rs = st.executeQuery("select name from sysdatabases") ; while(rs.next()){ c_database.addItem(rs.getString("name")) ; } } catch (Exception ex) { } //注册事件监听 c_database.addActionListener(this) ; l_table.addListSelectionListener(this) ; b.addActionListener(this) ; //布置左边的面板 JPanel leftPanel = new JPanel() ; leftPanel.setLayout(new BorderLayout()) ; leftPanel.add(c_database , BorderLayout.NORTH) ; leftPanel.add(l_table , BorderLayout.CENTER) ; leftPanel.add(b ,BorderLayout.SOUTH) ; //布置窗体 this.setLayout(new GridLayout(1 , 2)) ; this.add(leftPanel) ;}public Connection getConnection(String dataBaseName) { Connection cn = null ; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ; cn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename="+dataBaseName,"sa","1234") ; } catch (Exception ex) { } return cn ;}public static void main(String args[]){ MyXSD1 w = new MyXSD1() ; w.setVisible(true) ;}public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("comboBoxChanged")){ //获得用户选择的数据库名 String database = (String)c_database.getSelectedItem() ; try { Connection cn = this.getConnection(database) ; Statement st = cn.createStatement() ; ResultSet rs = st.executeQuery("select name from sysobjects where xtype='U' and status>0") ; //JList 接收Vector,将表名存入 Vector v_tableName = new Vector() ; while(rs.next()){ v_tableName.addElement(rs.getString("name")) ; } l_table.setListData(v_tableName) ; } catch (Exception ex) { } } if(e.getActionCommand().equals("生成")){ //生成Schema try { //获得用户选择的库名&表名 String database = (String)c_database.getSelectedItem() ; String table = (String)l_table.getSelectedValue() ; //获得指定表的列信息 Connection cn = this.getConnection(database) ; Statement st = cn.createStatement() ; ResultSet rs = st.executeQuery("select count(*) from syscolumns where id=(select id from sysobjects where name='"+table+"')") ; rs.next() ; int size = rs.getInt(1) ;
2007年10月05日 06点10分 1
level 6
胖刘老师 楼主
String column[][] = new String[size][2] ; rs = st.executeQuery("select c.name name , t.name type from syscolumns c join systypes t on c.xusertype = t.xusertype where id=(select id from sysobjects where name='"+table+"') ") ; for (int i = 0; i
") ; pw.println("
") ; pw.println("
") ; pw.println("
") ; pw.println("
") ; pw.println("
") ; pw.println("
") ; for (int i = 0; i
") ; } pw.println(" ") ; pw.println(" ") ; pw.println(" ") ; pw.println(" ") ; pw.println(" ") ; pw.println(" ") ; pw.println("") ; pw.close() ; } catch (Exception ex) { ex.printStackTrace() ; } }}public void valueChanged(ListSelectionEvent e) { this.setSize(600 , 400) ; //获得用户选择的库名&表名 String database = (String)c_database.getSelectedItem() ; String table = (String)l_table.getSelectedValue() ; try { Connection cn = this.getConnection(database) ; Statement st = cn.createStatement() ; ResultSet rs = st.executeQuery("select * from "+table) ; ResultSetMetaData rsmd = rs.getMetaData() ; int columnCount = rsmd.getColumnCount() ; //取得列名 Vector columnName = new Vector() ; for (int i = 1; i<=columnCount; i++){ columnName.addElement(rsmd.getColumnName(i)) ; } //取得内容 Vector rowData = new Vector() ; while(rs.next()){ Vector row = new Vector() ; for (int i = 1; i<=columnCount; i++){ row.addElement(rs.getString(i)) ; } rowData.addElement(row) ; } JTable table_data = new JTable(rowData , columnName) ; rightPanel.removeAll() ; rightPanel.setLayout(new BorderLayout()) ; rightPanel.add(table_data , BorderLayout.CENTER) ; this.add(rightPanel) ; this.setSize(601 , 401) ; } catch (Exception ex) { ex.printStackTrace() ; }}}
2007年10月05日 06点10分 2
1