JDBC

  1. 做JDBC时项目添加Maven框架,里面添加依赖信息为,我们这里使用的是MySQL8.0.17版本
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
    </dependency>
</dependencies>
  1. 第一步:注册驱动,一个jdbc程序中可以注册多个驱动
    Class.forName(“驱动类的类全名1”);//oracle
    Class.forName(“驱动类的类全名2”);//mysql
    Class.forName(“驱动类的类全名3”);//sqlserver
//1、注册驱动
        //注册驱动的四种方式
        //第一种:使用Class.forName("驱动类全名的字符串表示"),推荐使用方式
        /*String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver);*/

        //第二种:调用DriverManager调用相关方法注册驱动
        //缺点:只能使用mysql的驱动了,更改性低,在程序中自行
        //创建相关driver类的对象,但是
        //不推荐使用这种方式,因为如果后期更改了数据库,则
        //需要修改源代码创建其他的Driver对象。
        Driver driver = new Driver();
        DriverManager.registerDriver(driver);

        //第三种:使用System类注册驱动
        //使用System调用setProperty方法,传递两参数
        //相当于给java系统配置了一个环境变量
		//String driver = "com.mysql.jdbc.Driver";
        //System.setProperty("jdbc.driver",driver);

        //第四种:在jdbc2.0版本中,不需要显示的注册驱动
        //在程序中,完全不用写注册驱动的代码
  1. 第二步:获取连接
    前提是在MySQL中创建了数据库db_briup
    String URL = “jdbc:mysql://127.0.0.1:8017/db_briup”
    String user = “root”;
    String password = “root”;
    DriverManager.getConnection(url,user,password);
//2、获取连接对象connection(三种方式)
 //cmd终端中>mysql -uroot -p -h127.0.0.1 -P5726
 //2.1获取连接时,还需要:URL,用户名和密码
 String url = "jdbc:mysql://127.0.0.1:5726/db_briup?useSSL=true";
 String user = "root";
 String password = "root";
 Connection conn = DriverManager.getConnection(url,user,password);

 //2.2只提供URL,其实是将用户名和密码以参数形式直接集成在URL中
 /*String url = "jdbc:mysql://127.0.0.1:5726/briup?user=root&password=root";
 Connection conn = DriverManager.getConnection(url);*/

 //2.3提供简单的URL,将用户名和密码封装至Properties对象中
/* String url = "jdbc:mysql://127.0.0.1:5726/briup";
 Properties properties = new Properties();
 properties.setProperty("user","root");
 properties.setProperty("password","root");
 Connection conn = DriverManager.getConnection(url, properties);*/
 System.out.println(conn);
  1. 第三步:获取Statement对象,Statement,PreparedStatement
//3、获取Statement对象
//普通的Statement对象
Statement stat = conn.createStatement();
  1. 第四步:执行SQL语句
//4、执行SQL语句
//DML:insert,delete,update
//DDL:create,drop,alter
//DCL:grant,revoke
//DQL:select,show
//执行SQL语句方法有三种:
//stat.executeQuery(sql);该方法的返回值是resultSet,该方法一般用于执行DQL语句
//stat.execute(sql);该方法的返回值是布尔类型,返回值代表该SQL语句是否执行失败,
//执行失败返回true,成功则false,一般用于DDL、DCL语句
//stat.executeLargeUpdate(sql);该方法的返回值是int类型,返回值代表该SQL语句
//在执行完成之后,影响了数据库表中的多少条记录,一般用于DML语句
String sql = "show databases";
ResultSet rs = stat.executeQuery(sql);
  1. 第五步:如果执行的是select语句,处理结果接(可选,如果不是select,那么就不用)
String name;
double salary;
while (rs.next()){
 //如果字段有别名,在获取值时必须使用别名获取
      name = rs.getString("last_name");
//    name = rs.getString(1);   //尽量使用别名,而不是用索引
      salary = rs.getDouble(2);
      System.out.println(name + ";;;" + salary);
}
  1. 第六步:关闭连接,释放资源
//6、关闭资源
rs.close();
stat.close();
conn.close();
  1. PrepareStatement对象能防止SQL注入攻击,能够批量处理SQL语句
		Connection conn = null;
        PreparedStatement ps = null;
        //prepareStatement能防止SQL注入攻击,能够批量处理SQL语句
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");

            String url = "jdbc:mysql://127.0.0.1:8017/db_briup";
            String user = "root";
            String passwd = "root";

            conn = DriverManager.getConnection(url, user, passwd);

            //将事务的提交方式改成手动提交
            conn.setAutoCommit(false);

            //向PreparedStatement对象,需要提供预处理的sql语句
            //向s_emp表中插入数据,id,last_name,salary
            String sql = "insert into s_emp(id,last_name,salary) value(?,?,?)";

            ps = conn.prepareStatement(sql);

            //给占位符赋予真实值,这里的数字1,2,3代表占位符问号中的第几位
            ps.setInt(1,300);
            ps.setString(2,"lhm");
            ps.setDouble(3,12345);

            //执行SQL语句,返回值表示此SQL语句执行之后影响了数据库中的多少行数据
            int i = ps.executeUpdate();
            System.out.println(i);

            //将所有的SQL语句先添加到缓冲区中
            //            ///ps.addBatch();

            //因为已经修改了事务提交方式,必须手动提交
            conn.commit();
        }catch (Exception e){
            //捕获异常,将事务回滚,那么必须将事务提交方式改成手动提交
            try {
                conn.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            //关闭连接释放资源
            if (ps != null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值