一、什么是JDBC
Java数据库连接,(Java Database Connectivity,简称JDBC)是[Java语言]中用来规范客户端程序如何来访问数据库的[应用程序接口],提供了诸如查询和更新数据库中数据的方法
二、简单操作JDBC
步骤
1、导入数据库驱动包(mysql、mssql、oracle等)
2、装载数据库驱动程序
3、获取数据库连接
4、获取可执行的数据语句对象
5、执行语句
6、关闭连接
/**
* @description JDBC连接数据库
*
* 1、导入数据库驱动包(mysql、mssql、oracle等)
* 2、装载数据库驱动程序
* 3、获取数据库连接
* 4、获取可执行的数据语句对象
* 5、执行语句
* 6、关闭连接
* @version 1.0
* @author mpmanyu.com
* @update 2021年3月25日 下午6:33:59
*
*/
public class JdbcDemo1 {
public static void main(String[] args) {
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try {
//1装载数据库驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2 获取数据库连接对象
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=shen", "shen", "123");
//3 获取执行sql语句的statement对象
statement = conn.createStatement();
//4执行sql语句得到结果集
rs = statement.executeQuery("select * from userlogin");
//5遍历结果集
while(rs.next()) {
System.out.println(rs.getString(1)+"_"+rs.getString(2));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
/**
* 关闭资源,关闭之前要判断资源是否存在
*/
if(rs !=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(statement!=null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
三、JDBC对象与方法
1、Connection:数据库连接
createStatement() :创建执行sql语句的对象
prepareStatement(sql): 创建执行sql语句的预加载对象
prepareCall(sql) :创建执行存储过程的对象
setAutoCommit(boolean autoCommit) :设置事务的自动提交
commit():提交事务
rollback():回滚事务
2、Statement对象
executeQuery(String sql):查询
executeUpdate(String sql):增删改
addBatch(String sql):把多条的sql语句放进同一个批处理中(添加批处理)
executeBatch():向数据库发送一批sql语句执行(执行批处理)
statement.clearBatch();清空批处理
3、PreparedStatement对象(预加载,尽量使用此对象,可防注入)
executeQuery():查询
executeUpdate():增删改
preparedStatement.addBatch();添加批处理
preparedStatement.executeBatch();执行批处理
preparedStatement.clearBatch();清空批处理
setString(1,id):第一个参数表示第几个占位符【也就是?号】,第二个参数表示值是多少
4、ResultSet对象
getObject(String columnName):获取Object类型数据
getString(String columnName) :获取String类型数据
next():游标下移
等