Java的JDBC的各个类的详解
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
详解对象:
1.DriverManager:驱动管理对象
功能:1.注册驱动:告诉数据库该使用哪一个数据库驱动jar
static void registerDriver(Driver driver);注册与给定的驱动程序DriverMnager
写代码:Class.forName("com.mysql.cj.jdbc.Driver");
PS:在mysql5之后,注册驱动步骤可以省略不写,因为在jar包里包含了注册驱动
2.获取数据库连接:
方法:static Connection getConnection(String url,String user,String password);
参数:1.url:指定路径
*语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
*举例:jdbc:mysql://localhost:3306/hsp_db02
*细节:如果连接的是本机的mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbcjdbc:mysql:///数据库名称
2.user:用户名
3.password:数据库设置的密码
2.Connection:数据库连接对象
1.功能:
1.获取执行sql的对象
*Statement createStatement()
*PreparedStatement preparedStatement(String sql)
2.管理事务:
*开始事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开始事务
*提交事务:commit()
*回滚事务:rollback()
3.Statement:执行sql语句对象
1.执行sql
1.boolean execute(String sql) :可以执行任意的sql了解
2.int executeUpdate(String sql) 可以执行DML(insert,update,delete)语句、DDL(create,alter,drop)语句
*返回值:影响的行数,可以通过这个影响的行数来判断DML语句是否执行成功
3.ResultSet executeQuery(String sql) :执行DQL(select)语句
*返回值:结果集
4.ResultSet:结果集合对象,封装查询结果
* next():游标向下移动一行
* getXxx():获取数据
Xxx:代表数据类型,如:int getInt(),String getString()
* 参数:
1.int 代表列的编号。从1开始 如:getString(1)
2.String 代表列的名称 如:getString("balance")
5.PreparedStatement:执行sql语句对象
1.sql注入问题:在拼接sql时,有一些sql特殊关键字参与字符串的拼接,会造成安全性的问题
*输入用户名随便,输入密码:'a' or 'a'='a'
*sql:select * from user where username='fhdsjkf' and password='a' or 'a'='a'
2.解决sql注入问题:使用PreparedStatement对象来解决
3.预编的sql:参数使用?作为占字符
4.步骤:
1》导入驱动jar包
2》注册驱动
3》获取数据库连接对象 connection
4》定义sql
*注意:sql参数使用?作为占位符,如:select * from user where username=? and password=?;
5》获取定义sql语句的对象 Connection.prepareStatement(String sql)
6》给?赋值:
*方法:setXxx(参数1,参数2)
*参数1:?的位置编号从1开始
*参数2:?的值
7》执行sql,接受返回结果,不需要传递sql语句
8》处理结果
9》释放资源
建议:所有JDBC用PreparedStatement来完成增删改查操作
1.可以防止sql注入
2.效率更高
*/
public class JDBC02 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//3.获取数据库连接对象
//Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/hsp_db02","root","011012");
Connection con= DriverManager.getConnection("jdbc:mysql:///hsp_db02","root","011012");
//4.定义sql
String sql="update account set balance=1000 where id=1";
//5.获取定义sql语句的对象 statement
Statement stm=con.createStatement();
//6.执行sql,接受返回结果
int count=stm.executeUpdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stm.close();
con.close();
}
}