目录
宝子们,今天咱就来唠唠 Java 是咋跟数据库打交道的。在开发那些超酷的应用程序时,数据的存储和读取可是至关重要的环节,而 Java 访问数据库的方式就像是打开数据宝库的不同钥匙。
一、JDBC 基础入门
(一)连接数据库的第一步
首先呢,咱得知道啥是 JDBC(Java Database Connectivity),这可是 Java 访问数据库的根基。就好比你要去一个神秘的岛屿(数据库),JDBC 就是那艘带你前往的船。
在开始之前,得先把对应的数据库驱动搞到手。比如说,如果是 MySQL 数据库,就得去找到 MySQL 的 JDBC 驱动包,然后加到咱的 Java 项目里。这就像是给船准备好燃料,不然可走不动。
(二)简单代码示例
来,看看下面这段代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JdbcBasicExample { public static void main(String[] args) { // 这就是数据库的地址,告诉 Java 要去哪儿找数据库,格式得写对哦 String url = "jdbc:mysql://localhost:3306/mydb"; // 数据库的用户名,就像你上某个网站的账号 String username = "root"; // 密码,可不能随便告诉别人 String password = "your_password"; try { // 这一步就像是启动船的引擎,加载数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 建立连接,现在船出发啦,驶向数据库 Connection connection = DriverManager.getConnection(url, username, password); // 创建一个能执行 SQL 语句的家伙 Statement statement = connection.createStatement(); // 写个简单的 SQL 语句,比如创建一个表 String sql = "CREATE TABLE IF NOT EXISTS test_table (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255))"; // 让它去执行这个 SQL 语句 statement.executeUpdate(sql); // 用完了就得关闭资源,先把执行 SQL 的家伙关掉 statement.close(); // 再关掉连接,船靠岸啦 connection.close(); System.out.println("表创建成功,数据库连接操作顺利!"); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } } }
这段代码就是最基础的 JDBC 操作,创建了一个表。宝子们可以看到,通过 DriverManager
拿到连接,用 Statement
执行 SQL,最后关闭连接,是不是有点感觉了?
二、更安全的 PreparedStatement
(一)为啥要用它
有时候,咱直接用 Statement
可能会有安全隐患,这时候 PreparedStatement
就闪亮登场啦。它可以防止一种叫 SQL 注入的坏事儿发生。比如说,有人想通过在输入框里输入一些奇怪的字符,来篡改你的 SQL 语句,获取不该获取的信息,这可不行!而 PreparedStatement
就能把这些危险挡在门外。
(二)代码示例
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class PreparedStatementExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; String username = "root"; String password = "your_password"; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection(url, username, password); // 看这里,SQL 语句里用问号占位,就像给要填的信息留了个空座位 String sql = "INSERT INTO test_table (name) VALUES (?)"; // 创建 PreparedStatement 对象 PreparedStatement preparedStatement = connection.prepareStatement(sql); // 给占位符设置值,第一个参数是占位符的位置(从 1 开始),第二个是要设置的值 preparedStatement.setString(1, "张三"); // 执行插入操作 preparedStatement.executeUpdate(); // 关闭资源 preparedStatement.close(); connection.close(); System.out.println("数据安全插入成功!"); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } } }
用 PreparedStatement
插入数据是不是很简单?而且还安全,宝子们以后插入、更新数据的时候尽量用它哦。
三、高效的连接池
(一)连接池是啥好东西
每次都去创建和销毁数据库连接是不是有点麻烦,还浪费资源?这就像你每次出门都要重新造一辆车,开完就扔掉,太奢侈啦!连接池就是解决这个问题的神器。它会提前创建好一些数据库连接,放在一个 “池子” 里,当程序需要连接数据库时,就从池子里拿一个,用完了再放回去,而不是每次都重新创建和销毁,这样效率就大大提高啦。
(二)Druid 连接池示例
咱以常用的 Druid 连接池为例,看看代码咋写。
首先得把 Druid 的依赖加到项目里哦。
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.16</version> </dependency>
然后是代码:
宝子们看,用连接池是不是很方便?而且能让咱的程序运行得更高效、更稳定。
好啦,今天就给大家介绍了 Java 访问数据库的几种常见方式,从基础的 JDBC,到更安全的 PreparedStatement
,再到高效的连接池。希望大家都能掌握这些技能,在开发的道路上勇往直前!如果有啥问题,随时在评论区留言哦。
在Java中访问数据库的几种方式的优缺点对比
除了JDBC,还有哪些Java框架可以方便地访问数据库?
如何优化Java访问数据库的性能?