时尚

java怎么连接数据库mysql

时间:2010-12-5 17:23:32  作者:热点   来源:综合  查看:  评论:0
内容摘要: Java连MySQL,核心就四步:加载驱动、建立连接、执行SQL、关闭资源。别听网上那些花里胡哨的框架教程,先把原生JDBC跑通,后面用MyBatis还是Hibernate都顺手。 第一步,你得有个

Java连MySQL,连接核心就四步:加载驱动、数据建立连接、连接执行SQL、数据关闭资源。连接别听网上那些花里胡哨的数据框架教程,先把原生JDBC跑通,连接后面用MyBatis还是数据Hibernate都顺手。

第一步,连接你得有个驱动包。数据去Maven中央仓库搜“mysql-connector-j”,连接最新稳定版直接拷进项目的数据lib目录,或者用Maven/Gradle配依赖。连接我见过太多新手卡在这——明明代码一模一样,数据报错ClassNotFoundException,连接一查,驱动jar根本没引进来。这玩意儿就像你家电视遥控器,电池没装,按烂了也没反应。

接着写代码。先注册驱动,老版本要Class.forName("com.mysql.jdbc.Driver"),新版本驱动(8.0+)连这行都省了,但写上没坏处。然后拼连接串:

String url = "jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password);

注意那串参数。useSSL=false是本地开发关掉加密,省得报警告;serverTimezone=UTC必须加,不然你查时间字段会跟你本地时区差8小时,这坑我踩过,凌晨两点排查数据对不上,最后发现是时区问题,当场想把电脑砸了。

拿到Connection之后,别急着写SQL。用Statement还是PreparedStatement?听我的,无脑选后者。虽然多写两行,但能防SQL注入,还能预编译提升性能。比如你要按id查用户:

String sql = "SELECT * FROM users WHERE id = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, 101); ResultSet rs = ps.executeQuery(); while (rs.next()) {  System.out.println(rs.getString("name")); }

这里有个细节,ResultSet默认只能向前遍历,想倒着读或者跳着读,得在创建Statement时设置参数,但99%的场景用不上。真到了要分页或者复杂遍历的时候,你早该上ORM框架了。

最后一步最容易被忽略——关资源。别只关Connection,ResultSet、Statement都得关。顺序跟创建相反,先rs再ps最后conn。很多人图省事只关连接,短时间看不出问题,跑个定时任务连续开几百次连接,数据库直接报“Too many connections”。用Java 7的try-with-resources语法能自动关,省心:

try (Connection conn = DriverManager.getConnection(...); PreparedStatement ps = conn.prepareStatement(sql)) {  // 执行逻辑 } catch (SQLException e) {  e.printStackTrace(); }

写完代码跑一下,大概率遇到几个经典异常。Communications link failure八成是MySQL服务没起或者端口被防火墙挡了;Access denied就是用户名密码错或者权限不够;Unknown database说明库名拼错了。别慌,看报错信息里的关键词,百度一搜全是答案。

说句掏心窝的话,现在企业项目里你很难见到裸JDBC——Spring的JdbcTemplate封装得更好,MyBatis把SQL和代码解耦,但底层原理还是这套流程。把原生连接搞明白,哪天框架出了诡异问题,你能从底层日志里看出端倪,而不是只会重启。

对了,MySQL 8.0以上版本,驱动类名变成了com.mysql.cj.jdbc.Driver,连接串里还得加allowPublicKeyRetrieval=true,否则会报RSA加密相关的错。这些坑都是版本升级带来的,别指望网上老教程,多看看官方文档比啥都强。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap