Java连接MySQL的经验总结
今天开始在一台新的服务器上配置能连接数据库的Java程序,这里选择连接MySQL。这篇日志里,将记录一些经验和自己的疑问。
感兴趣的朋友,可以结合参考我之前的一篇博客,一起来学习一下。
首先,还是在:http://www.mysql.com/downloads/mysql/ 下载MySQL安装程序。按照之前博客总结的简单步骤,安装好MySQL的最新版本后(我这里是5.5.16),还是选择Navicat作为可视化管理工具(我也没有仔细调研过其他可视化管理方法,这个工具我拥有的破解版本也比较老)。(上述过程也请到我之前的一篇博客参考)。
其次,下载MySQL的官方JDBC连接器。点击 http://dev.mysql.com/downloads/connector/j/ 进行下载。(我这里下载的版本是Connector/J 5.1.18)
下载后解压到某一位置,然后将mysql-connector-java-5.1.18-bin.jar的位置加入到环境变量CLASSPATH中,对于如何不重启系统而使环境变量生效,可参考我之前的一篇博客。
依照我之前的习惯,会新建一个数据库连接类(例如命名为DBConnection.java)
import java.sql.*; public class DBConnection { private Connection con; public DBConnection(){ String CLASSFORNAME ="com.mysql.jdbc.Driver"; String SERVANDDB ="jdbc:mysql://127.0.0.1:3306/test"; String USER ="root"; String PWD ="%之前设置的root密码%"; try { Class.forName(CLASSFORNAME); con = DriverManager.getConnection(SERVANDDB,USER,PWD); } catch(Exception e) { e.printStackTrace(); } } public int getRes(String sql) { try { Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); int result=stmt.executeUpdate(sql); return result; } catch(Exception e){ e.printStackTrace(); } return 0; } public ResultSet getRes2(String sql){ try { Statement stmt2=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet result=stmt2.executeQuery(sql); return result; } catch(Exception e){ e.printStackTrace(); } return null; } }
然后在另一个Java文件中新建一个DBConnection对象。
DBConnection dbcon=new DBConnection(); try { String sq="select * from test"; ResultSet rs = dbcon.getRes2(sq); rs.next(); System.out.println(rs.getString("id")); rs.close(); } catch (Exception e) { e.printStackTrace(); }
但是实际上这样会报错,会说“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”
说明刚才设置的环境变量实际上没有起到作用。看网上有人说,直接将mysql-connector-java-5.1.18-bin.jar加入到工程的Build Path即可。步骤:选中工程名——点击右键——选择“Properties”——“Java Build Path”——“Libraries”——“Add External JARs”,打开的对话框中选择mysql-connector-java-5.1.18-bin.jar。就可以正常执行了。但是这种方法毕竟太麻烦,不知道环境变量设置有什么问题。
另外,DBConnection.java这个文件我会包含两个public的method:public int getRes(String sql)和public ResultSet getRes2(String sql),前者用于插入而后者用于查询。其实原则上只建立一个method就可以了。这只是我自己的习惯。
进行好上述设置之后,实际上就可以正常运行了,至此,Java连接MySQL的整个过程就基本实现了。其实很简单,但是还想记录下来,供一些初学的朋友参考。
(2012年9月15日补充:由于这篇日志写好之后被查看了很多次,这里补充一点内容,以免误导一些朋友:很多情况下连接数据库时,都是Web项目,这时候最好是把JDBC连接器,如“mysql-connector-java-5.1.21-bin.jar”放到WebRoot/Web-INF/lib目录下,这样更方便项目的迁移。)