JDBC
1.jdbc是什么,本质是什么
Java数据库连接,java可以操作各种关系型数据库
本质就是一个普通的java类,数据库厂商提供的驱动jar包,来实现sun公司提供一套"应用程序接口规范"
JDBC七大操作步骤的关于API的介绍
java.sql.Drvier 驱动接口
java.sql.DriverManager:驱动管理类(管理jdbc的驱动服务)
java.sql.Connection:与特定数据库的一种会话连接
java.sql.Statement:执行静态sql语句 (执行对象,操作数据库)
java.sql.ResultSet:获取数据表的结果集 (接口)
2.jdbc的基本操作步骤
1.导包 并且注册驱动
Class.forName("com.mysql.jdbc.Driver") ; //mysql5.5 /5.7---对应的jar包5.1
Class.forName("com.mysql.cj.jdbc.Driver") ;//mysql8.0 --对应jar包 8.0的jar包
2.获取数据库的连接对象
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/库名", //如果驱动包8.0 库名?带上参数
"root",
"登录数据库的密码"
) ;
3.准备好的sql语句
String sql = "select * from student" ;
4.通过连接获取数据库的执行对象
Statement stmt = conn.createStatement() ;
5.执行sql,发送给数据库
int count = stmt.executeUpdate(sql) ;
6.输出结果
System.out.println("影响了"+count+"行") ;
7.释放资源
stmt.close() ;
conn.close() ;
3.使用Statement完成DDL语句以及DML语句的操作
DDL语句(创建表):
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection();
String sql = "create table 表名(字段名称1 字段类型,...)";
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
statement.close();
connection.close();
DML语句(增删改):
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection();
增:String sql = "insert into 表名 values(值1,值2,值3...)";
删:String sql = "delete from 表名 where 条件";
改:String sql = "update 表名 set 修改内容 where 条件";
Statement statement = connection.createStatement();
int count = statement.executeUpdate(sql);(count为受到影响的数据库表中的行数)
statement.close();
connection.close();
4.使用Statement完成DQL语句的操作
DQL语句(查询表):
Class.forName("com.mysql.jdbc.Driver") ;
Connnection conn = DriverManager.getConnection();
String sql = "select * from 表名" ;
Statement stmt = conn.createStatement() ;
ResultSet rs = stmt.executeQuery(sql) ;
while(rs.next()){
字段类型 变量名 = rs.getString("字段名称") //或
字段类型 变量名 = rs.getInt(列的索引值) ;
}
rs.close();
stmt.close() ;
conn.close() ;
5.封装JDBC基本操作的工具类的步骤
给src目录下配置文件:xxx.properties
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/库名
username=root
password=登录的密码
class JdbcUtils{
//声明成员变量
private static String driverClass = null ;
private static String url = null ;
private static String username = null ;
private static String password = null ;
private JdbcUtils(){}
//提供静态代码块:随着类的加载而加载
static{
//创建属性列表:属性集合类 Properties
Properties prop = new Properties() ;
//读取配置文件 获取配置文件所在的输入流对象
InputStream inputStream = JdbcUtils.class.getClassLoader().getResurcesAsStream("xxx.properties") ;
//将流对象中的加载属性列表中prop
prop.load(inputStream) ;
//通过key获取它里面的value
drierClass = prop.getProperty("driverClass") ;
url = prop.getProperty("url") ;
username = prop.getProperty("username") ;
password = prop.getProperty("password") ;
//注册驱动
Class.forName(drierClass) ;
}
//获取连接对象
public static Connection getConnection(){
Connnection conn = DriverManager.getConnection(url,username,password) ;
return conn ;
}
//释放资源--关闭相关系统资源
//针对DDL语句或者DML语句,Statement对象以及Connection对象关闭
public static void close(Statement stmt,Connnection conn){
close(null,stmt,conn) ;
}
//针对DQL语句,ResultSet对象以及Statement以及Connection对象关闭
public static void close(ResultSet rs,Statement stmt,Connnection conn){
if(rs!=null){
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrice() ;
}
}
}
}