java与MYSQL连接的精典例子,用swing显示

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;

//GUI变量定义
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;

public inensshow()
{
//Form的标题
super"输入SQL语句,按查询按钮查看结果。" );

String url 
= "jdbc:mysql://localhost:3306/test";
String username 
= "root";
String password 
= "000000";
//加载驱动程序以连接数据库
try {
Class.forName( 
"org.gjt.mm.mysql.Driver" );
connection 
= DriverManager.getConnection(
url, username, password );
}

//捕获加载驱动程序异常
catch ( ClassNotFoundException cnfex ) {
System.err.println(
"装载 JDBC/ODBC 驱动程序失败。" );
cnfex.printStackTrace();
System.exit( 
1 ); // terminate program
}

//捕获连接数据库异常
catch ( SQLException sqlex ) {
System.err.println( 
"无法连接数据库" );
sqlex.printStackTrace();
System.exit( 
1 ); // terminate program
}

//如果数据库连接成功,则建立GUI
//SQL语句
String test="SELECT * FROM about";
inputQuery 
= new JTextArea( test, 430 );
submitQuery 
= new JButton( "查询" );
//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( 
500300 );
//显示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 );
}

}

);
}

}
 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值