JDBC连接代码实现
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true";
String user = "root";
String password = "123456";
//3.创建连接,数据库对象
Connection connection = DriverManager.getConnection(url, user, password);
//4.创建执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL的对象去执行SQL,查看结果
String sql = "select * from result";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
System.out.println(resultSet.getObject("studentno"));
System.out.println(resultSet.getObject("subjectno"));
System.out.println(resultSet.getObject("examdate"));
System.out.println(resultSet.getObject("studentresult"));
System.out.println("----------------------------------------------");
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
URL格式
MySQL url 格式:
“jdbc:mysql://[ip#]:[port#]/[which database]?[Parameter1]&[Parameter2]&…”
Oracle ur l格式:
“jdbc:oracle:thin:@[ip#]:[port#]:sid”
MySQL默认port 3306
Oracle默认port 1521
Connection对象
Connection对象即可代表数据库,SQL的commit和rollback皆为其method,调用实现事务功能。
Statement & ResultSet对象
该对象主要用于增删改查数据库;主要记住两个method:
Statement.executeQuery();
Statement.executeUpdate();
“增删改” 用executeUpdate(),返回一个int类型,大于0则代表更改成功,否则失败。
“查” 用executeQuery(),返回一个ResultSet类型。ResultSet类型类似于iterator,可用于遍历,配合getObject()使用来获取结果集中的数据。
PreparedStatement对象
针对Statement的对象SQL注入漏洞而生的新对象,且效率更高。
与Statement不同,PS不赋值先预编译,通过后再赋值,赋值后直接执行。
PS把传进来的参数用“”包围,直接当作字符串,试图用SQL注入的转义字符(例如’’,单引号)会被直接转义失去效果。
JDBC内开启事务
数据库连接池(池化技术)
数据库的 “ 连接–释放 ” 过程非常消耗资源,故可以预先准备多个连接后,等待服务不同对象,彻底结束后关闭等待,再释放全部连接。