JDBC的全称:Java DataBase Connectivity ( java数据库链接)。
作用:
在没有JDBC驱动之前,程序员必须了解每种数据库的驱动。而在jdbc推出以后,我们只需要了解jdbc里面的一些具体实现,然后就可以链接数据库了,这样以后我们及不需要了解每种数据库的驱动了。
JDBC
过程
1.搭建开发环境:
初始化工作,创建数据库
2.编写程序,在程序中加载数据库驱动
3.建立链接
4.创建用于向数据库发送SQL的Statement对象
5.从返回结果集的ResultSet中取出数据
6.断开与数据库的链接,并释放相关资源
代码段
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获得链接
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctext","root","123456");
//3.SQL
String sql="select * from user";
Statement stmt=conn.createStatement();
ResultSet resultSet=stmt.executeQuery(sql);
while (resultSet.next()) {
int uid=resultSet.getInt("uid");
String username=resultSet.getString("username");
String password=resultSet.getString("password");
String name=resultSet.getString("name");
System.out.println(uid+"----"+username+"----"+password+"----"+name);
}
//4.释放资源
resultSet.close();
stmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
DriverManager:驱动管理类
主要作用:
1.注册驱动
实际开发注册中用:Class.forName("com.mysql.jdbc.Driver");
2.获得链接
DriverManager.getConnection(String url,String username,Sting password);
url写法jdbc:mysql://localhost:3306/database
jdbc:协议
mysql:子协议
localhost:主机名
3306:端口号
database:数据库名称
Connection:链接对象
主要作用:
1.创建执行SQL语句的对象
Statement createStatement() 执行sql语句,有sql注入的漏洞
PreparedStatement prepareStatement(String sql) 预编译SQL语句
CallableStatement prepareCall(String sql) 执行SQL中存贮过程
2.进行事务管理
setAutoCommit(boolean autoCommit) 设置事务是否自动提交
commit() 事务提交
rollback() 事务回滚
Statement:执行SQL
主要作用
1.执行SQL语句
execute(String sql) 执行SQL,返回值boolean
executeQuery(String sql) 执行SQL中的select语句,返回值ResultSet
executeUpdate(String sql) 执行更新操作,返回值int
2.执行批处理操作
addBatch(String sql) 添加到批处理
executeBatch() 执行批处理
clearBatch() 情况批处理
ResultSet:结果集(select语句查询到的结果的封装)
主要作用:
结果集获取查询到的结果
next() 光标下移动
针对不同的类型的数据使用getXXX()获取数据,通用的获取数据的方法:getObject();
JDBC的资源释放
特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
正确释放资源的方式是,在开始捕获异常块完声明为null,在捕获异常的finally块中进行,代码格式为
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
rs=null;//设为null垃圾回收机制将更早回收对象
}














网友评论