引入相关依赖包
想要用JDBC操作数据库,我们就必须要下载JDBC相关的依赖。
这些依赖其实就是我们用来操作数据库的代码。
那么什么是JDBC呢?
JDBC就是 Java DataBase Connectivity 的简称,是数据库连接的意思。
JDBC是Sun公司发布的一套用Java语言操作数据库的API,也就是接口。
接口大家都知道吧?可以这么说,接口其实就是规范。
任何数据库想要被Java语言操作,就必须根据JDBC来实现具体的操作类,像MYSQL就是实现了JDBC的实现类,所以我们把这个依赖下载到项目中去后就可以操作MYSQL数据库了。
我现在用的是 mysql-connector-java-5.1.47.jar 这个。大家自己去下载,下载好后就Ctrl+c复制进来就行。lib就是相关依赖的文件。
引好包后就像这样:
![](https://img-blog.csdnimg.cn/ff511b909b914143ac68189c07b4f102.png)
1.加载驱动
public class Test {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
}
}
首先,我们调用Class的forName方法,这个方法能将传入的类初始化。我们传入的参数
"com.mysql.jdbc.Driver"
表示需要加载的类的全限定名(包括包名)。它是一个字符串类型的参数。
因为我们的这个类在我们的项目里面,所以我们这样写就行了。
这样,我们就执行了驱动的初始化。
接着,我们就可以获取连接了。
在获取连接之前,我们需要设定好三个参数。
url,用户名,密码。
url就是我们要使用的是哪个数据库。
用户名就是你mysql的用户名,一般都是 root ,密码就是mysql的密码。
这个数据库既可以连接本地的MYSQL也可以连接远程的MYSQL,比如以后写大项目时,我们需要将数据库部署到专门的服务器上面去。
我这里就演示本地MYSQL的连接。
private static String url="jdbc:mysql://localhost:3306/market";
private static String usernameSql="root";
private static String passwordSql="123";
下面是对URL中常见参数的解读:
<数据库厂商名称>
:指定要连接的数据库类型,如MySQL、Oracle、SQL Server等。
<主机名>
:数据库服务器的主机名或IP地址。
<端口>
:数据库服务器监听的端口号。一般是3306,但是你可以自己去改MYSQL的iml配置文件,可以将端口号改为其他的可用端口号。比如,我写网站时用的8080之类的,不过最好不要改,因为一个端口只能被一个服务占用。
<数据库名>
:要连接的数据库名。
<参数1>=<值1>&<参数2>=<值2>...
:其他附加参数,用于配置连接属性。
具体代码附上:
public class Test {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
private static String url="jdbc:mysql://localhost:3306/market?useSSL=false";
private static String usernameSql="root";
private static String passwordSql="123";
public static void main(String[] args) {
Connection conn=null;
PreparedStatement psmt=null;
try {
conn= DriverManager.getConnection(url,usernameSql,passwordSql);
String sql="select * from goods";
psmt=conn.prepareStatement(sql);
ResultSet rs=psmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+":"+rs.getString(2));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
try {
psmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
try-catch我就不多说了。
我们来看看具体的操作流程。
在这个代码执行之前,我们需要创建好相关的数据库,当然也可以用代码去实现,只不过我已经创建好了。
比如我就已经有了一个数据库叫market,它里面有一张表叫goods。
我现在所进行的操作就是对这个表所有数据进行查询。我们来看看具体的操作流程。
首先,通过Class.forName("com.mysql.jdbc.Driver")
加载MySQL数据库驱动程序。这一步通常需要在使用特定数据库之前进行,以确保驱动程序被正确加载。
接下来,定义了连接数据库所需的URL、用户名和密码等信息。
在main
方法中,首先通过DriverManager.getConnection(url, usernameSql, passwordSql)
获取数据库连接对象 Connection
,该方法会根据提供的URL和认证信息建立与MySQL数据库的连接。
然后,定义了要执行的SQL语句,即查询语句 select * from goods
。
创建预处理语句 PreparedStatement
对象 psmt
,并使用该对象执行查询操作 executeQuery()
,将查询结果存储在 ResultSet
对象 rs
中。
通过循环遍历 rs
,调用 getInt(1)
和 getString(2)
方法获取每一行记录中第一列和第二列的值,并打印输出。
最后,在合适的位置使用 close()
方法关闭相关资源,包括 PreparedStatement
和 Connection
对象。这样可以释放占用的数据库资源和防止资源泄露。
需要注意的是,对于异常的处理,使用了抛出 RuntimeException
的方式。这样可以简化代码并将异常传播给上层调用者处理。
总结起来,这段代码的作用是连接到MySQL数据库,执行一条查询语句,并输出查询结果。
其实代码也可以这样写,不过刚才写的代码适合新手入门。比较好理解。
public class Test {
private static final String URL = "jdbc:mysql://localhost:3306/market?useSSL=false";
private static final String USERNAME = "root";
private static final String PASSWORD = "123";
private static final String SQL = "SELECT * FROM goods";
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
PreparedStatement psmt = conn.prepareStatement(SQL);
ResultSet rs = psmt.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getInt(1) + ":" + rs.getString(2));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
里面用的是新的try-catch语句,将资源作为参数传入后,这些资源在语句块运行结束后会自动关闭,就不需要再手动close了。