JAVA-JDBC(Mysql)

1 篇文章 0 订阅

JDBC
一.什么是持久化数据
断电也能保存下来的数据

二.基本操作
创建maven工程
1.加载驱动
在pom.xml文件中配置JDBC驱动版本
https://mvnrepository.com/artifact/mysql/mysql-connector-java

Class.forName("com.mysql.jdbc.Driver");

JDBC的配置
8.0+:com.mysql.cj.jdbc.Driver;
8.0-:com.mysql.jdbc.Driver;

2.获取与数据库的连接

Connection conn = null;
//配置JDBC地址、用户、密码
String url = "jdbc:mysql://127.0.0.1:3306/scoot";(访问协议)
String user = "root";
String passwd = "123456";
conn = DriverManager.getConnection(url,user,passwd);

3.获取statement

Statement stm = conn.createStatement();(不建议使用Statement)

可以使用PreparedStatement,预编译

PreparedStatement sqlPs = jConnect.prepareStatement(sql);

Statement存在的问题:
(1)会造成sql注入:只要在sql语句中加入特定的恒等式,查询的数据就会把整张表的数据拿到,有安全隐患
(2)每查询一次就会编译一次,极大的消耗性能

4.执行sql语句,获取结果集ResultSet

ResultSet result = stm.executeQuery("select empno as en,ename,hiredate from `emp`");

5.遍历查询结果

while(result.next()){
        int empon = result.getInt("en");
//       int empon = result.getInt(1);
        String ename = result.getString("ename");
        Date date = result.getDate("hiredate");
        System.out.println(empon + "," + ename + "," + date);
}

6.获取查询数据
(1)数据可以根据列名获取,别名获取
(2)数据可以根据列所在位置获取,从1开始
(3)数据的获取要符合数据类型的对应和数据库支持的类型保持一致

三.增删改查
(1)在JDBC当中,数据的修改默认是没有事务的
(2)在JDBC当中完成事务
setAutoCommit(false) 把自动提交关掉
commit() 手动提交
rollback() 回滚
(3)批量插入数据
addBatch() 添加需要批量执行的数据
executeBatch() 执行批量添加的数据

实例:

package com.kop.insert;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;

public class exerciseJDBC {
    public static void main(String[] args) {
        Connection jConnect = null;
        try {
            //加载jdbc驱动
            Class.forName("com.mysql.jdbc.Driver");
            //定义需要连接的数据库,账号,密码
            String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/scoot";
            String jdbcUser = "root";
            String jdbcPasswd = "123456";
            jConnect = DriverManager.getConnection(jdbcUrl,jdbcUser,jdbcPasswd);

            //关闭事务自动提交
            jConnect.setAutoCommit(false);

            String sql = "INSERT INTO `dept` (`deptno` , `dname` , `loc`) VALUES (? , ? , ?)";

//            String sql = "DELETE from `dept` where `deptno` = ?";
            //把sql放到statement中编译

            PreparedStatement sqlPs = jConnect.prepareStatement(sql);
            for (int i = 50; i < 100 ; i += 10) {
//                sqlPs.setObject(1,50);
//                sqlPs.setObject(1,60);
//                sqlPs.setObject(1,70);
//                sqlPs.setObject(1,80);
//                sqlPs.setObject(1,90);
                sqlPs.setObject(1,i);
                sqlPs.setObject(2,"JavaSyswork");
                sqlPs.setObject(3,"CHENGDU");

                //批量导入需要修改的数据
                sqlPs.addBatch();
            }
            //批量提交需要修改的数据
           int[] sqlArray = sqlPs.executeBatch();
            jConnect.commit();
            System.out.println(Arrays.toString(sqlArray));

        } catch (ClassNotFoundException e) {
            if(jConnect != null){
                try {
                    jConnect.rollback();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (jConnect != null) {
                try {
                    jConnect.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值