从JDBC到JPA (1)
JDBC基础
什么是JDBC?
Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。
简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库(Mysql、Oracle、SQL Server)进行操作。
废话不多说,直接开始使用
- 准备工作:数据库安装配置(Mysql、Oracle、SQL Server)
- 下载数据库对应的jar包
- JDBC基本操作
首先了解操作流程:
- DriverManager:这个类管理数据库驱动程序的列表,查看加载的驱动是否符合JAVA Driver API的规范。
- Connection:用于联系数据库的所有方法。与数据库中的所有的通信是通过唯一的连接对象(Connection)。
- Statement:把创建的SQL对象,转而存储到数据库当中。
- ResultSet:它是一个迭代器,用于检索查询数据。
- SQLException:此类处理数据库应用程序中发生的任何错误。
建立连接代码示范
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/student";
String userName = "root";//将要连接数据库的账户
String password = "123456";//将要连接数据库的密码
Connection conn = null;
try {
Class.forName(driver); //classLoader,注册JDBC驱动程序
conn = (Connection) DriverManager.getConnection(url, userName, password);//打开连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
获得执行sql语句的对象
接口名 | 描述 |
---|---|
Statement | SQL语句不带参数时使用。用于对数据库进行通用访问,在运行时使用静态SQL语句时很有用。 |
PreparedStatement | SQL语句带参数时使用,当计划要多次使用SQL语句时使用。 |
- 在遇到要执行的SQL语句是带可变参数的时候,就用PreparedStatement对象:
String sql = "insert into user(sno,name,age)values(?,?,?)";//定义一个要执行的SQL语句
PreparedStatement ps = (PreparedStatement)conn.prepareStatement(sql);
ps.setString(1,student.getSno());//设置SQL语句的第一个参数
ps.setString(2,student.getName());//设置SQL语句的第二个参数
ps.setInt(3,student.getAge());//设置SQL语句的第三个参数
int i = ps.executeUpdate();//执行SQL语句
- 当要执行的SQL语句的是不带可变参数的时:
String sql = "SELECT * FROM user";
Statement statement = conn.createStatement(sql);//sql语句的执行对象
ResultSet row = statement.executeQuery();//执行SQL语句
while (row.next()){
String loginName=row.getString("loginName");
String userName=row.getString("userName");
String password=row.getString("password");
int sex=resultSet.getInt("sex");
System.out.println(loginName+"-"+userName+"-"+password+"-"+sex);
}
执行sql语句
(1)增,删,改: exexuteUpdate() 方法 : 返回一个整形(对数据库影响的行数)
(2) 查: exexuteQuery() 方法 : 返回一个结果集对象(Resultest 在数据库中查到的一条数据)
读取返回对象集中的数据的方法:
Resultest.next(): 能够返回给你还有没有记录,
getObjeck方法: 读取一条记录里面字段所对应的值
释放资源
最后将用到的传输有关的对象使用完成后统统释放
try {
if(rs !=null)rs.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
try {
if(sta !=null)sta.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
try {
if(conn !=null)conn.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
使用规范
- 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。
- 注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的通信通道。
- 打开连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,它表示与数据库的物理连接。
- 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
- 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。
- 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。