我是靠谱客的博主 壮观短靴,最近开发中收集的这篇文章主要介绍DCL JDBC基础创建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DCL管理用户增删查
  1. 添加用户:
    * 语法:CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
  2. 删除用户:
    * 语法:DROP USER ‘用户名’@‘主机名’;
  3. 修改用户密码:
    UPDATE USER SET PASSWORD = PASSWORD(‘新密码’) WHERE USER = ‘用户名’;
    UPDATE USER SET PASSWORD = PASSWORD(‘abc’) WHERE USER = ‘lisi’;
    SET PASSWORD FOR ‘用户名’@‘主机名’ = PASSWORD(‘新密码’);
    SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘123’);
  4. 查询用户:
    – 1. 切换到mysql数据库
    USE myql;
    – 2. 查询user表
    SELECT * FROM USER;
    * 通配符: % 表示可以在任意主机使用用户登录数据库
    • mysql中忘记了root用户的密码?
  5. cmd – > net stop mysql 停止mysql服务
    • 需要管理员运行该cmd
  6. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
  7. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
  8. use mysql;
  9. update user set password = password(‘你的新密码’) where user = ‘root’;
  10. 关闭两个窗口
  11. 打开任务管理器,手动结束mysqld.exe 的进程
  12. 启动mysql服务
  13. 使用新密码登录
DCL管理权限
  1. 查询权限:
    – 查询权限
    SHOW GRANTS FOR ‘用户名’@‘主机名’;
    SHOW GRANTS FOR ‘lisi’@’%’;
  2. 授予权限:
    – 授予权限
    grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
    – 给张三用户授予所有权限,在任意数据库任意表上
    GRANT ALL ON . TO ‘zhangsan’@‘localhost’;
  3. 撤销权限:
    – 撤销权限:
    revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
    REVOKE UPDATE ON db3.account FROM ‘lisi’@’%’;
JDBC概念

概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库
JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

JDBC_快速入门

步骤:
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
2.右键–>Add As Library
2. 注册驱动
3. 获取数据库连接对象 Connection
4. 定义sql
5. 获取执行sql语句的对象 Statement
6. 执行sql,接受返回结果
7. 处理结果
8. 释放资源

JDBC各个类详解_DriverManager_注册驱动

//2.注册驱动
Class.forName(“com.mysql.jdbc.Driver”);

  1. 注册驱动:告诉程序该使用哪一个数据库驱动jar
    static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。
    写代码使用: Class.forName(“com.mysql.jdbc.Driver”);
    通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块
    static {
    try {
    java.sql.DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
    throw new RuntimeException(“Can’t register driver!”);
    }
    }

注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。

JDBC_DriverManager_获取数据库连接

获取数据库连接:

  • 方法:static Connection getConnection(String url, String user, String password)
    • 参数:
    • url:指定连接的路径
    • 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
    • 例子:jdbc:mysql://localhost:3306/db3
    • 细节:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为: jdbc:mysql:///数据库名称
    • user:用户名
    • password:密码
JDBC各个类详解_Connection
  1. 获取执行sql 的对象
    • Statement createStatement()
    • PreparedStatement prepareStatement(String sql)
  2. 管理事务:
    • 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
    • 提交事务:commit()
    • 回滚事务:rollback()
JDBC各个类详解_Statement
  1. 执行sql
    1. boolean execute(String sql) :可以执行任意的sql 了解
    2. int executeUpdate(String sql) :执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句
    • 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。
  2. ResultSet executeQuery(String sql) :执行DQL(select)语句
JDBC练习_insert语句
Statement stmt = null;
		        Connection conn = null;
		        try {
		            //1. 注册驱动
		            Class.forName("com.mysql.jdbc.Driver");
		            //2. 定义sql
		            String sql = "insert into account values(null,'王五',3000)";
		            //3.获取Connection对象
		            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
		            //4.获取执行sql的对象 Statement
		            stmt = conn.createStatement();
		            //5.执行sql
		            int count = stmt.executeUpdate(sql);//影响的行数
		            //6.处理结果
		            System.out.println(count);
		            if(count > 0){
		                System.out.println("添加成功!");
		            }else{
		                System.out.println("添加失败!");
		            }
		
		        } catch (ClassNotFoundException e) {
		            e.printStackTrace();
		        } catch (SQLException e) {
		            e.printStackTrace();
		        }finally {
		            //stmt.close();
		            //7. 释放资源
		            //避免空指针异常
		            if(stmt != null){
		                try {
		                    stmt.close();
		                } catch (SQLException e) {
		                    e.printStackTrace();
		                }
		            }
		
		            if(conn != null){
		                try {
		                    conn.close();
		                } catch (SQLException e) {
		                    e.printStackTrace();
		                }
		            }
		        }
JDBC各个类详解_ResultSet_基本使用

ResultSet:结果集对象,封装查询结果
* boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
* getXxx(参数):获取数据
* Xxx:代表数据类型 如: int getInt() , String getString()
* 参数:
1. int:代表列的编号,从1开始 如: getString(1)
2. String:代表列名称。 如: getDouble(“balance”)

	* 注意:
		* 使用步骤:
			1. 游标向下移动一行
			2. 判断是否有数据
			3. 获取数据
JDBC各个类详解_ResultSet_遍历结果集

//循环判断游标是否是最后一行末尾。
while(rs.next()){
//获取数据
//6.2 获取数据
int id = rs.getInt(1);
String name = rs.getString(“name”);
double balance = rs.getDouble(3);
System.out.println(id + “—” + name + “—” + balance);
}

JDBC练习_select语句

练习:

  • 定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回。
    1. 定义Emp类
    2. 定义方法 public List findAll(){}
    3. 实现方法 select * from emp;
public class emp {
    private int id;
    private String ename;
    private int job_id;
    private int mgr;
    private Date joindate;
    private double salary;
    private double bonus;
    private int dept_id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getJob_id() {
        return job_id;
    }

    public void setJob_id(int job_id) {
        this.job_id = job_id;
    }

    public int getMgr() {
        return mgr;
    }

    public void setMgr(int mgr) {
        this.mgr = mgr;
    }

    public Date getJoindate() {
        return joindate;
    }

    public void setJoindate(Date joindate) {
        this.joindate = joindate;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }

    public int getDept_id() {
        return dept_id;
    }

    public void setDept_id(int dept_id) {
        this.dept_id = dept_id;
    }

    @Override
    public String toString() {
        return "emp{" +
                "id=" + id +
                ", ename='" + ename + ''' +
                ", job_id=" + job_id +
                ", mgr=" + mgr +
                ", joindate=" + joindate +
                ", salary=" + salary +
                ", bonus=" + bonus +
                ", dept_id=" + dept_id +
                '}';
    }
}
 // 导入包 (导过了)
        // 将三个对象 提出 作用域太小 finally中接收不到 (扩大对象 集合的作用域)
        ResultSet rs = null;
        Connection conn  = null;
        Statement stmt = null;
        List<emp> list = null;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获得数据库连接对象
            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
            //执行sql的语句
            String sql = "select * from emp";
            //获得数据库操作对象
            stmt = conn.createStatement();
            //操作数据库
            rs = stmt.executeQuery(sql);
            //创建List集合 遍历rs对象 将数据存入List集合中
            list = new ArrayList<emp>();
            // 遍历rs对象
            while(rs.next()){
                //提取数据
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgr = rs.getInt("mgr");
                Date joindate = rs.getDate("joindate");
                int salary = rs.getInt("salary");
                int bonus = rs.getInt("bonus");
                int dept_id = rs.getInt("dept_id");

                //向list集合添加数据
                //新建emp对象
                emp Emp = new emp();
                Emp.setId(id);
                Emp.setEname(ename);
                Emp.setJob_id(job_id);
                Emp.setMgr(mgr);
                Emp.setJoindate(joindate);
                Emp.setSalary(salary);
                Emp.setBonus(bonus);
                Emp.setDept_id(dept_id);
                //向集合中添加数据
                list.add(Emp);
            }

            //遍历集合输出(忘了....)
            System.out.println(list);
            System.out.println(list.size());

            //关闭流 (必须要关  所以在finally中)
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally{
            //关闭流
            //判断是否为空 为空 则不用关流 否则报空指针
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                if(stmt!= null){
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

最后

以上就是壮观短靴为你收集整理的DCL JDBC基础创建的全部内容,希望文章能够帮你解决DCL JDBC基础创建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部