您现在的位置是:娱乐 >>正文

java连接mysql数据库

娱乐5人已围观

简介 拿JDBC直连MySQL,代码量不大,但坑都在细节里。先看最核心的几行: Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = D ...

拿JDBC直连MySQL,连接代码量不大,据库但坑都在细节里。连接先看最核心的据库几行:

Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC", "root", "password" );

第一行加载驱动,第二行建立连接。连接就这么简单?据库对,但前提是连接你得先把mysql-connector-java的jar包扔进classpath。Maven项目就加个依赖,据库Gradle同理,连接手动导包的据库话记得别放错地方——我见过有人把jar丢在桌面然后报ClassNotFoundException,查了半天。连接

连接串里的据库参数别乱删。useSSL=false是连接本地开发常用的,生产环境你得上证书。据库serverTimezone=UTC是连接MySQL 8.0以后的硬性要求,不加会报时区错误,那报错信息长得像外星文,实际就缺这俩参数。

拿到Connection之后,下一步是Statement还是PreparedStatement?直接说结论:永远用PreparedStatement。不是因为它能防SQL注入这种老生常谈,而是它处理参数、日期、特殊字符时省心得多。举个我踩过的例子——往表里插一条带单引号的数据,用Statement拼字符串直接语法错误,换成PreparedStatement的setString(),啥事没有。

String sql = "INSERT INTO users(name, age) VALUES(?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "张三"); ps.setInt(2, 25); ps.executeUpdate();

这几行代码看着简单,但有个隐藏雷区——连接用完必须关。别偷懒不写finally块,也别用旧式的conn.close()裸奔。Java 7以后有try-with-resources,语法长这样:

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

这样写,连接和语句自动关闭,不用手动清理。但注意,如果你在循环里反复开连接,那性能会烂到没法看——每次new Connection都要握手、鉴权、建会话,开销几十毫秒起步。这时候得用连接池,HikariCP是首选,配置也就几行:

HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb"); config.setUsername("root"); config.setPassword("password"); HikariDataSource ds = new HikariDataSource(config);

然后从ds.getConnection()拿连接,用完还回去就行,池子自己管生命周期。

最后说个很多人忽略的——查询结果集遍历。ResultSet默认只能向前滚动,但有些人想用rs.last()获取行数,直接报错。解决方法是创建语句时加参数:

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

或者干脆别纠结行数,用rs.next()循环加计数器,性能还更好。

写完这些,连接数据库的基本操作就齐了。剩下的异常处理、事务控制、批量插入,都是在这个骨架上添砖加瓦。代码跑起来的那一刻,你就能真正理解Java和MySQL之间那层薄薄的协议是怎么通过JDBC翻译成SQL指令的。

Tags:

相关文章

  • p2p理财诈骗常用手段是

    娱乐

    2018年夏天,我亲眼见过一个六十多岁的老太太蹲在派出所门口哭。她投了四十万进去,那家平台叫“康养之家”,宣传单上印着高端养老社区的效果图,业务员管她叫干妈,逢年过节送米送油。直到警方查封办公室那天, ...

    【娱乐】

    阅读更多
  • oracle mysql server组件安全漏洞

    娱乐

    2024年4月,Oracle在季度关键补丁更新中修复了MySQL Server的多个高危漏洞,其中CVE-2024-21100的CVSS评分高达9.8。攻击者无需认证,仅通过网络就能触发远程代码执行。 ...

    【娱乐】

    阅读更多
  • 安徽省工程造价信息网

    娱乐

    去年秋天我帮朋友查一个合肥的厂房项目,需要调2019年第三季度的钢筋信息价。翻遍了各种渠道,最后还是在《安徽省工程造价信息网》上找到了原始数据。这个网站,很多干造价的人天天用,但真要说出它到底能干什么 ...

    【娱乐】

    阅读更多


友情链接