Java(JDBC)

一、DriverManager

  • 注册驱动
Class.forName("com.mysql.jdbc.Driver");
  • 获取连接
static Connection connection = null;
connection = DriverManager.getConnection(url, user, password);
  • 1.ur:连接路径

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2..
示例:jdbc:mysql://localhost:3306/xxt


细节:

  • 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则ur可以简写为:idbc:mysa!:/数据库名称?参数键值对
  • 配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
  • 2.user:用户名
  • 3.password:密码

 


二、 Connection

  1. 获取执行 SQL 的对象
  • 普通执行SQL对象

  • 预编译SQL的执行SQL对象:防止SQL注入

  • 执行存储过程的对象

 

 2.事务管理

  • MySQL 事务管理

开启事务:BEGIN;/START TRANSACTION;
提交事务:COMMIT;
回滚事务:ROLLBACK;


MySQL默认自动提交事务

  •  JDBC 事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务:false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback() 

 


 

三、Statement

  • Statement作用:
  1. 执行SQL语句
  • 执行SQL语句

int  executeUpdate(sgl):执行DML、DDL语句
返回值:(1)DML语句影响的行数(2)DDL语句执行后,执行成功也可能返回0

 ResultSet executeQuery(sql):执行DQL语句
返回值:ResultSet结果集对象 

 


 

四、ResultSet

  • 使用步骤:
  1. 游标向下移动一行,并判断该行否有数据:next()
  2. 获取数据:getXxx(参数)

//循环判断游标是否是最后一行末尾
while(rs.next()){
//获取数据
rs.getXxx(参数); 

 


 

五、PreparedStatement

  • PreparedStatement作用:
  1. 预编译SQL语句并执行:预防SQL注入问题
  • SQL注入
  •     SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法 

 


 

增删改查

public class Main {
    static final String url="jdbc:mysql://localhost:3306/xxt?useServerPrepStmts=true";
    static final String user = "root";
    static final String password = "123456";
    static Connection connection = null;

    public static void main(String[] args) throws Exception {
        getConnection();
    }

    // 获取数据库连接
    public static void getConnection() throws Exception {

        /*String Username = "005";
        String Password = "123456";
        String Nick = "小黄";*/
        //int id = 5;

        try {
            // 注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 获取连接
            connection = DriverManager.getConnection(url, user, password);
            System.out.println("连接成功");
        } catch (ClassNotFoundException e) {
            System.out.println("找不到MySQL驱动程序类!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("获取数据库连接时出现错误!");
            e.printStackTrace();
        }

        //添加
        /*String sql1 = "insert into user (Username, Password, Nick) values(?,?,?)";  //定义sql
        PreparedStatement ps = connection.prepareStatement(sql1);                   //获取执行sql的对象
        ps.setString(1,Username);
        ps.setString(2,Password);
        ps.setString(3,Nick);                                        //设置参数
        int count = ps.executeUpdate();                                             //执行sql
        System.out.println(count > 0);*/


        //删除
        /*int Id = 5;
        String sql1 = "delete from user where id = ?";  //定义sql
        PreparedStatement ps = connection.prepareStatement(sql1);                   //获取执行sql的对象
        ps.setInt(1,Id);                                        //设置参数
        int count = ps.executeUpdate();                                             //执行sql
        System.out.println(count > 0);*/


        //修改
        /*String sql3 = "update user set Password = 123456 where id = 1";
        *//*String sql3 = "update user\n" +
                "set Username = ?,\n" +
                " Password = ?,\n" +
                " Nick = ?\n" +
                "where id = ?";*//*
        PreparedStatement ps = connection.prepareStatement(sql3);
       *//* ps.setString(1,Username);
        ps.setString(2,Password);
        ps.setString(3,Nick);
        ps.setInt(4,id);*//*

        int count = ps.executeUpdate();
        System.out.println(count > 0);*/



        //查询全部
        String sql4 = "select * from user";
        Statement s = connection.createStatement();
        ResultSet rs = s.executeQuery(sql4);
        List<User> list = new ArrayList<>();
        while(rs.next()){
            User user = new User();

            int Id = rs.getInt("id");
            String Username = rs.getNString("Username");
            String Password = rs.getNString("Password");
            String Nick = rs.getNString("Nick");

            user.setId(Id);
            user.setUsername(Username);
            user.setPassword(Password);
            user.setNick(Nick);


            list.add(user);
        }
        System.out.println(list);


        /*rs.close();
        s.close();
        connection.close();*/

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值