JDBC编程
JDBC简介:
JDBC(Java Data Base Connection):Java数据库连接。是一种标准Java应用编程接口(Java API),将数据库和Java程序连接起来,是开发人员可以通过Java程序访问数据库。
常见的JDBC组件(JDBC开发中主要用到的类):
- DriverManager :这个类管理一系列数据库驱动程序。
匹配连接使用通信子协议从 JAVA 应用程序中请求合适的数据库驱动程序。
识别 JDBC 下某个子协议的第一驱动程序将被用于建立数据库连接。 - Driver : 这个接口处理与数据库服务器的通信。你将很少直接与驱动程序互动。
相反,你使用 DriverManager 中的对象,它管理此类型的对象。
它也抽象与驱动程序对象工作相关的详细信息。 - Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,
即:所有与数据库的通信仅通过这个连接对象进行。 - Statement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。
除了执行存储过程以外,一些派生的接口也接受参数。 - ResultSet : 在你使用语句对象执行 SQL 查询后,这些对象保存从数据库获得的数据。
是一个迭代器,方便遍历得到的结果集。 - SQLException : 这个类处理发生在数据库应用程序的任何错误。
JDBC编程步骤:
- 加载数据库驱动,通过反射Class.forName(String driverName);加载。
- 通过Connection connection=DriverManager.getConnection(url,user,password);来获得数据库连接。
- url:数据库地址,MySQL中为jdbc:mysql://localhost:3306/数据库名 localhost是本地主机,也就是说这个位置放的是要连接的数据库所在的主机信息;3306是数据库的端口号;后再跟上要访问的数据库名。
- user:安装数据库时设置的用户名。
- password:用户对应的密码。
- 可能需要设置隔离级别
connection.setTransactionIsolation(Connection.TRANSACTION_NONE); - 创建Statemebt对象(常用的有两种)
- Statement statement = connection.createStatement();
- PreparedStatement prepareStatement = connection.prepareStatement();
- 通过statement/prepareStatement对象来执行SQL语句,并拿到结果集ResultSet(如果是查询多条语句).
5.如果有结果集则迭代遍历结果集。 - 关闭连接资源。结果集、statement对象、connection都要关闭。
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JdbcDemo {
private String jdbcDriver;//数据库驱动名
private String jdbcUrl;//访问的数据库所在主机url
private String user;//数据据的用户名
private String password;//数据库的密码
//以上信息我可以放在.properties文件中,该文件是Java中的配置文件,支持key-value的存储方式,这里定义一个流来访问该文件,在java.util包路径下
//这样做以后要改上面的信息就不用改代码,而是改文件
private Properties properties;
private String dbpro;//db.properties的路径
private Connection connection;//先定义一个connection对象,注意在java.sql包路径下
private Statement statement;//定义一个Statement接口的对象statement
private PreparedStatement ps;//定义一个PreparedStatement接口的对象ps
//构造方法初始化成员变量
public JdbcDemo(){
properties=new Properties();//实例化流
try {
properties.load(new FileInputStream("D:\\Java\\servlet_demo\\src\\main\\resources\\db.properties"));//加载db.properties文件
jdbcDriver=properties.getProperty("jdbcDriver");//从文件中读取key=jdbcDriver对应的value值
jdbcUrl=properties.getProperty("jdbcUrl");
user=properties.getProperty("user");
password=properties.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
//获取数据库连接,封装在这个方法中
public void getConnection(){
try {
Class.forName(jdbcDriver);//1.加载数据库驱动
connection=DriverManager.getConnection(jdbcUrl,user,password);//2.获取数据库连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//下面我把对数据库的