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

开发 后端
Java连接MySQL终于做好了,虽然功能是简单了点,不过我会推出复杂一点的程序,可能以后推出的只用鼠标就可以完成绝大部分的数据库操作。

这次的Java连接MySQL数据库操作,还是用的和那个非常小的数据库管理系统(JSP)一样的MySQL web_data 的数据库。

图示如下:

连接图示 


代码如下:

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


------------------------------------------------------------

这次在WIN98中就不好使了。因为MySQL的驱动程序没有也没能加入到CLASSPATH 当中,但是JSP却可以使用(JSP的98驱动加载详见Jsp与Mysql连接查错文章),所以这次我是在XPServer中测试的。Java连接MySQL成功。

【编辑推荐】

  1. Java连接MySQL中文乱码处理
  2. 如何用Java通过ODBC链接MySQL
  3. Java虚拟机内部构成浅析
  4. 浅谈Java线程的生命周期
  5. 关于Java继承的一些复习
责任编辑:张燕妮 来源: jspcn
相关推荐

2011-07-20 13:40:00

SQLite数据库查询数据

2010-06-07 15:24:34

Java连接MYSQL

2020-09-22 15:56:31

Java

2010-05-27 10:10:00

连接MySQL数据库

2012-02-03 10:32:46

Java

2011-08-18 18:18:05

MySQL数据库优化

2011-07-20 12:55:17

SQLite数据库插入数据

2010-05-25 18:21:28

MySQL连接数据库

2011-07-21 16:28:20

MySQL数据库带游标的存储过程

2010-05-26 15:43:37

连接MySQL数据库

2011-07-20 14:57:47

SQLite数据库ORDER BYGROUP BY

2010-06-01 10:47:21

连接MySQL数据库

2011-07-20 13:18:01

SQLite数据库修改和删除数据

2010-02-02 17:27:16

C++连接MySqL数

2018-01-04 10:43:43

OracleMysqlJava

2010-05-25 09:47:05

2011-07-06 17:50:59

NaviCat

2021-06-10 13:50:55

代码开发数据库

2011-05-26 13:42:50

MFC连接MySql数据库

2011-08-02 13:26:38

JavaBeanSQL Server
点赞
收藏

51CTO技术栈公众号