一个通过Java连接MySQL数据库的代码

来源:互联网 发布:ppt数据编辑不了 编辑:程序博客网 时间:2024/06/04 01:29
  1. import java.sql.*;  
  2. import javax.swing.*;  
  3. import java.awt.*;  
  4. import java.awt.event.*;  
  5. import java.util.*;  
  6. public class inensshow extends JFrame {  
  7. private Connection connection;  
  8. private Statement statement;  
  9. private ResultSet resultSet;  
  10. private ResultSetMetaData rsMetaData;  
  11. //GUI变量定义 
  12. private JTable table;  
  13. private JTextArea inputQuery;  
  14. private JButton submitQuery;  
  15. public inensshow()  
  16. {  
  17. //Form的标题  
  18. super( "输入SQL语句,按查询按钮查看结果。" );  
  19. String url ="jdbc:mysql://localhost:3306/web";  
  20. String username ="inens";  
  21. String password ="inens";  
  22. //加载驱动程序以连接数据库 
  23. try {  
  24. Class.forName( "org.gjt.mm.mysql.Driver" );  
  25. connection =DriverManager.getConnection(  
  26. url, username, password );  
  27. }  
  28. //捕获加载驱动程序异常 
  29. catch ( ClassNotFoundException cnfex ) {  
  30. System.err.println(  
  31. "装载 JDBC/ODBC 驱动程序失败。" );  
  32. cnfex.printStackTrace();  
  33. System.exit( 1 ); // terminate program  
  34. }  
  35. //捕获连接数据库异常 
  36. catch ( SQLException sqlex ) {  
  37. System.err.println( "无法连接数据库" );  
  38. sqlex.printStackTrace();  
  39. System.exit( 1 ); // terminate program  
  40. }  
  41. //如果数据库连接成功,则建立GUI 
  42. //SQL语句 
  43. String test="SELECT * FROM data";  
  44. inputQuery =new JTextArea( test, 4, 30 );  
  45. submitQuery =new JButton( "查询" );  
  46. //Button事件 
  47. submitQuery.addActionListener(  
  48. new ActionListener() {  
  49. public void actionPerformed( ActionEvent e )
  50. {  
  51. getTable();  
  52. }  
  53. }  
  54. );  
  55. JPanel topPanel =new JPanel();  
  56. topPanel.setLayout( new BorderLayout() );  
  57. //将"输入查询"编辑框布置到 "CENTER" 
  58. topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER );  
  59. //将"提交查询"按钮布置到 "SOUTH" 
  60. topPanel.add( submitQuery, BorderLayout.SOUTH );  
  61. table =new JTable();  
  62. Container c =getContentPane();  
  63. c.setLayout( new BorderLayout() );  
  64. //将"topPanel"编辑框布置到 "NORTH" 
  65. c.add( topPanel, BorderLayout.NORTH );  
  66. //将"table"编辑框布置到 "CENTER" 
  67. c.add( table, BorderLayout.CENTER );  
  68. getTable();  
  69. setSize( 500, 300 );  
  70. //显示Form 
  71. show();  
  72. }  
  73. private void getTable()  
  74. {  
  75. try {  
  76. //执行SQL语句 
  77. String query =inputQuery.getText();  
  78. statement =connection.createStatement();  
  79. resultSet =statement.executeQuery( query );  
  80. //在表格中显示查询结果 
  81. displayResultSet( resultSet );  
  82. }  
  83. catch ( SQLException sqlex ) {  
  84. sqlex.printStackTrace();  
  85. }  
  86. }  
  87. private void displayResultSet( ResultSet rs )  
  88. throws SQLException  
  89. {  
  90. //定位到达第一条记录 
  91. boolean moreRecords =rs.next();  
  92. //如果没有记录,则提示一条消息 
  93. if ( ! moreRecords ) {  
  94. JOptionPane.showMessageDialog( this,  
  95. "结果集中无记录" );  
  96. setTitle( "无记录显示" );  
  97. return;  
  98. }  
  99. Vector columnHeads =new Vector();  
  100. Vector rows =new Vector();  
  101. try {  
  102. //获取字段的名称 
  103. ResultSetMetaData rsrsmd = rs.getMetaData();  
  104. for ( int i =1; i<= rsmd.getColumnCount(); ++i )  
  105. columnHeads.addElement( rsmd.getColumnName( i ) );  
  106. //获取记录集 
  107. do {  
  108. rows.addElement( getNextRow( rs, rsmd ) );  
  109. } while ( rs.next() );  
  110. //在表格中显示查询结果 
  111. table =new JTable( rows, columnHeads );  
  112. JScrollPane scroller =new JScrollPane( table );  
  113. Container c =getContentPane();  
  114. c.remove(1);  
  115. c.add( scroller, BorderLayout.CENTER );  
  116. //刷新Table 
  117. c.validate();  
  118. }  
  119. catch ( SQLException sqlex ) {  
  120. sqlex.printStackTrace();  
  121. }  
  122. }  
  123. private Vector getNextRow( ResultSet rs,  
  124. ResultSetMetaData rsmd )  
  125. throws SQLException  
  126. {  
  127. Vector currentRow =new Vector();  
  128. for ( int i =1; i<= rsmd.getColumnCount(); ++i )  
  129. currentRow.addElement( rs.getString( i ) );  
  130. //返回一条记录  
  131. return currentRow;  
  132. }  
  133. public void shutDown()  
  134. {  
  135. try {  
  136. //断开数据库连接 
  137. connection.close();  
  138. }  
  139. catch ( SQLException sqlex ) {  
  140. System.err.println( "Unable to disconnect" );  
  141. sqlex.printStackTrace();  
  142. }  
  143. }  
  144. public static void main( String args[] )  
  145. {  
  146. final inensshow app =  
  147. new inensshow();  
  148. app.addWindowListener(  
  149. new WindowAdapter() {  
  150. public void windowClosing( WindowEvent e )  
  151. {  
  152. app.shutDown();  
  153. System.exit( 0 );  
  154. }  
  155. }  
  156. );  
  157. }  
  158. }
原创粉丝点击