Java的数据库连接

779 篇文章 0 订阅
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><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

  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

  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 提供

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值