Java的数据库连接

本文介绍了一个使用Java Swing实现的简单图形界面应用程序,该程序能够连接到MySQL数据库并执行基本的SQL查询。通过这个示例,读者可以了解如何在Java中设置数据库连接、执行SQL语句并展示查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Java的数据库连接终于做好了,虽然功能是简单了点,不过我会推出复杂一点的程序,可能以后推出的只用鼠标就可以完成绝大部分的数据库操作,好了,这次的数据库还是用的和那个非常小的数据库管理系统(JSP)一样的Mysql web_data 的数据库。 图示如下: 代码如下: ------------------------------------------------------------ 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/web"; String username = "inens"; String password = "inens"; //加载驱动程序以连接数据库 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 data"; inputQuery = new JTextArea( test, 4, 30 ); 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( 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 ); } } ); } } ------------------------------------------------------------ 这次在WIN98中就不好使了。因为Mysql的驱动程序没有也没能加入到CLASSPATH 当中,但是JSP却可以使用(JSP的98驱动加载详见Jsp与Mysql连接查错文章),所以这次我是在XPServer中测试的。 新奇世界 ©iNENS 提供
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值