从数据库中取值放入jTable中 怎样把值传到jTable中这是困扰我的主要原因   最好带有传值过程     谢了

解决方案 »

  1.   

    package table;
    import java.sql.*; 
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    import java.util.*; public class inensshow extends JFrame { 
    private Connection connection; 
    private Statement statement; 
    private ResultSet resultSet; 
    private ResultSetMetaData rsMetaData; 
    private JTable table; 
    private JTextArea inputQuery; 
    private JButton submitQuery; public inensshow() 
    { super( "input the sql querry,see the result" ); String url = "jdbc:mysql://localhost:3306/worldculture"; 
    String username = "root"; 
    String password = "vli-0000"; 
    //加???程序以?接数据?
    try { 
    Class.forName( "org.gjt.mm.mysql.Driver" ); 

    //捕?加???程序?常
    catch ( ClassNotFoundException cnfex ) { 
    System.err.println( 
    "load the mysql-jdbcdriver error" ); 
    cnfex.printStackTrace(); 
    System.exit( 1 ); // terminate program 

    //捕??接数据??常//如果数据??接成功,?建立GUI
    //SQL?句
    try{
    connection = DriverManager.getConnection( 
    url, username, password ); 
    }catch ( SQLException sqlex ) { 
    System.err.println( "无法?接数据?" ); 
    sqlex.printStackTrace(); 
    System.exit( 1 ); // terminate program 

    String test="show tables;"; 
    inputQuery = new JTextArea( test, 4, 30 ); 
    submitQuery = new JButton( "Querry" ); 
    //Button事件
    submitQuery.addActionListener( 
    new ActionListener() { 
    public void actionPerformed( ActionEvent e ) 

    getTable(); 


    ); JPanel topPanel = new JPanel(); 
    topPanel.setLayout( new BorderLayout() ); 
    //将"?入??"??框布置到 "CENTER"
    topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER ); 
    //将"提交??"按?布置到 "SOUTH"
    topPanel.add( submitQuery, BorderLayout.SOUTH ); 
    table = new JTable(); 
    Container c = getContentPane(); 
    c.setLayout( new BorderLayout() ); 
    //将"topPanel"??框布置到 "NORTH"
    c.add( topPanel, BorderLayout.NORTH ); 
    //将"table"??框布置到 "CENTER"
    c.add( table, BorderLayout.CENTER ); 
    getTable(); 
    setSize( 500, 300 ); 
    //?示Form
    show(); 
    } private void getTable() 

    try { 
    //?行SQL?句
    String query = inputQuery.getText(); 
    statement = connection.createStatement(); 
    resultSet = statement.executeQuery( query ); 
    //在表格中?示???果
    displayResultSet( resultSet ); 

    catch ( SQLException sqlex ) { 
    sqlex.printStackTrace(); 

    } private void displayResultSet( ResultSet rs ) 
    throws SQLException 

    //定位到?第一条??
    boolean moreRecords = rs.next(); 
    //如果没有??,?提示一条消息
    if ( ! moreRecords ) { 
    JOptionPane.showMessageDialog( this, 
    "?果集中无??" ); 
    setTitle( "无???示" ); 
    return; 

    Vector columnHeads = new Vector(); 
    Vector rows = new Vector(); 
    try { 
    //?取字段的名称
    ResultSetMetaData rsmd = rs.getMetaData(); 
    for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) 
    columnHeads.addElement( rsmd.getColumnName( i ) ); 
    //?取??集
    do { 
    rows.addElement( getNextRow( rs, rsmd ) ); 
    } while ( rs.next() ); 
    //在表格中?示???果
    table = new JTable( rows, columnHeads ); 
    JScrollPane scroller = new JScrollPane( table ); 
    Container c = getContentPane(); 
    c.remove(1); 
    c.add( scroller, BorderLayout.CENTER ); 
    //刷新Table
    c.validate(); 

    catch ( SQLException sqlex ) { 
    sqlex.printStackTrace(); 


    private Vector getNextRow( ResultSet rs, 
    ResultSetMetaData rsmd ) 
    throws SQLException 

    Vector currentRow = new Vector(); 
    for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) 
    currentRow.addElement( rs.getString( i ) ); 
    //返回一条?? 
    return currentRow; 
    } public void shutDown() 

    try { connection.close(); 

    catch ( SQLException sqlex ) { 
    System.err.println( "Unable to disconnect" ); 
    sqlex.printStackTrace(); 

    } public static void main( String args[] ) 

    final inensshow app = 
    new inensshow(); 
    app.addWindowListener( 
    new WindowAdapter() { 
    public void windowClosing( WindowEvent e ) 

    app.shutDown(); 
    System.exit(0); 


    );