Java的JDBC的各个类的详解

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();
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值