JDBC基本用处及其配置文件写法
概述
JDBC就是数据库连接方法,是JAVA用来操作数据库的一个API(用户接口),用户通过这个接口编写类从而实现应用程序对数据库的操作。
JDBC文件编写
前言&准备
JDBC通常是由一个配置文件(properties)和一个调用文件(xml/jsp/java)组成,这其实就是java语言里[通过数据库驱动]-[调用配置文件]进行连接-[操作数据库]的过程。
1.首先数据库已经默认装好了,然后创建文件
2.加载数据库驱动file→project structure
3.如果是maven项目里用JDBC访问数据库,要在pom.xml文件里添加依赖,然后重新读取配置文件
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
接下来就是编写jdbc了。
编写配置文件MSQ.properties
我用的是MySQL8并且数据库里有中文内容,所以要设置:
时区(serverTimezone)
中文编码(characterEncoding)
DRIVER=com.mysql.cj.jdbc.Driver
URL=jdbc:mysql://localhost:3306/work?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
UNAME=root
passwd=123456
URL在数据库的属性(properties)里可以看到:
编写JDBC调用文件
jdbc有以下几个步骤:
一、读取配置文件,注册驱动(这选择第4种办法)
有五种办法:
1.ServletContext
2.ResourceBundle类
3.ClassLoader方式
4.getResouceAsStream
5.PropertiesLoaderUtils 工具类
二、连接数据库
有两种办法:(这选择第1种办法)
1.DriverManager
2.Driver接口
三、创建Statement对象
有两种办法:(这选择第1种办法)
1.PreparedStatement
2.Statement
四、执行sql语句
execute()方法,用于增删操作
executeQuery()方法,用于查询
executeUpdate()方法,用于修改数据
五、处理返回结果
ResultSet:用while (rs.next()){String target = rs.getString(“TARGET”);}的方式遍历结果集
六、关闭连接
关闭顺序:resultset-statement-connection
接下来上代码
import java.sql.*;
import java.io.InputStream;
import java.util.Properties;
public class JDBC {
public static Connection getConnection() throws Exception{
//加载配置文件,读取配置信息
Properties FILE = new Properties();
InputStream file = Thread.currentThread().getContextClassLoader().getResourceAsStream("MSQ.properties");
FILE.load(file);
String driver = FILE.getProperty("DRIVER");
String url = FILE.getProperty("URL");
String uname = FILE.getProperty("UNAME");
String passwd = FILE.getProperty("PASSWD");
//注册驱动
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
System.out.println("找不到驱动程序,加载驱动失败");
e.printStackTrace();
}
//与数据库建立连接
Connection con = null;
try {
con = DriverManager.getConnection(url,uname,passwd);
} catch (SQLException e) {
System.out.println("数据库连接失败");
e.printStackTrace();
}
return con;
}
private static void select(Connection conn) throws SQLException {
String sql="【你的sql查询语句】";
try {
PreparedStatement pst1 = conn.prepareStatement(sql1); //创建statement对象,执行sql语句
ResultSet rs = pst.executeQuery(); //存放获取的结果集
if (rs.next()) { //处理返回结果
System.out.println("列1__列2__列3");
do {//由于上面if已经用了一次next(),指针下移,所以在这里用do while进行及时更新记录
String id = rs.getString("列1");
String name = rs.getString("列2");
String home = rs.getString("列3");
System.out.println(列1+"__"+列2+"__"+列3);
} while (rs.next());
} else {
System.out.println("没有相关记录");
}
if (rs!=null) rs.close(); //关闭resultset、statement
if (pst!=null) pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Connection conn = JDBC.getConnection();
select(conn);
if (conn!=null) conn.close(); //关闭数据库连接
}
}