Eclipse连接MsSql数据库 8.0版JDBC驱动

工具

①mysql-connector-java-8.0.11.jar 驱动包
②eclipse 开发工具
③mysql-8.0.11 数据库

步骤

一、 mysql-connector-java-8.0.11.jar 下载
下载网址:https://dev.mysql.com/downloads/connector/j/

二、eclipse加载jdbc的驱动包

方法一:
1、直接将下载好的jar包复制粘贴到 java项目目录下
2、选中jar包,点击右键–>Buile Path–>Add to Build Path
3、这时java项目下的 Reference Librarial 目录下自动新增了一个图标是牛奶瓶的mysql-connector-java-8.0.11.jar包
在这里插入图片描述
方法二、
点击Java项目右键,【构建路径Build Path】 —> 【添加库Add Library】—> 【用户库User Library】—> 【用户库(u)…】—> 【新建一个用户库(名字随便就叫mysqllib吧)】—> 选中新建的用户库,点击【添加外部JAR(x)…】,选择解压文件中的【mysql-connector-java-8.0.11.jar】—> 【确定—>完成】。

三、 java连接数据库
连接原理是这样的,分为下面两步:
(1)加载驱动
(2)获取连接

首先:我们不妨打开jar包看看 com.mysql.cj.jdbc.Driver这个路径里面是什么东西吧,如下图:
在这里插入图片描述
这个就是我们所需要的驱动程序,用来驱动MySql和Java的连接,等会加载驱动程序的路径就写这个啦!

// 加载数据库驱动 (5.0版本是这样的: com.mysql.jdbc.Driver)
String driver = "com.mysql.cj.jdbc.Driver";

其次,连接数据库需要URL参数,URL:Uniform Resource Locator
其格式规则是这样的:主协议:子协议://服务器地址:端口号/数据库&字符集…
例如:

//下面是连接一个数据库名为test的URL
String url = "jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC";

根据前面说的两步:(1)加载驱动(2)获取连接
写出代码:

//驱动路径,为什么是这样的,参考上面讲的
String driver = "com.mysql.cj.jdbc.Driver";
//mysql连接地址
String url = "jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC";
// 数据库名称
String username = "root";
// 数据库密码
String password = "1025";
// 声明一个数据库的连接对象
Connection conn = null;

//加载驱动
Class.forName(driver);
//DriverManager.getConnection()方法得到数据库连接对象,连接MySQL数据库!
conn=DriverManager.getConnection(url,username,password);

现在已经完成了数据库的连接啦!

三、MySql数据库连接成功后,用SQL语句对数据库进行增删检查操作
原理是这样的,有两种写法,都分为三步:
第一种:
(1)书写SQL语句
(2)对SQL进行预编译声明
(3)执行SQL语句,用ResultSet类存放获取的结果集
代码如下:

String sql="select * from users";//书写SQL语句
PreparedStatement pStmt = conn.prepareStatement(sql);//prepareStatement 对SQL进行预编译声明
ResultSet rs=pStmt.executeQuery( );//executeQuery( )执行SQL语句,并用ResultSet类存放获取的结果集!

第二种
(1)书写SQL语句
(2)创建statement类对象
(3)执行SQL语句,用ResultSet类存放获取的结果集
代码如下:

//要执行的SQL语句
String sql="select * from grade" ;
 //创建statement类对象,用来执行SQL语句!
Statement Statement=conn.createStatement();
//ResultSet类,用来存放获取的结果集!
ResultSet rs=Statement.executeQuery(sql);

【注意】一般最好都写第一种,第一种都不会出错。
那这两种方式有什么区别呢?
当SQL语句中含有 占位符 “?” 时,就必须要用到第一种写法,要对SQL语句先进行预编译。例如:

String sql="select * from users where username=? and password=?";//?为占位符
//由于有占位符,所以需要对占位符进行预编译,然后在后面进行赋值
pStmt.setString(1,username);//给占位符赋值(序号从1开始)
pStmt.setString(2,password);
//注:set***有多种方法,如setInt()、setDouble()、setDate()等

java连接数据库完整代码:

public class connect {
    public static void main(String[] args){
    
    	// 加载数据库驱动
        String driver = "com.mysql.cj.jdbc.Driver";//路径为什么是这样的,参考上面讲的
        // 获取mysql连接地址
       String url = "jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC";
        // 数据库名称
       String username = "root";
        // 数据库密码
        String password = "1025";
        // 获取一个数据库的连接
        Connection conn = null;
        // 获取连接的一个状态
        try{
            Class.forName(driver);
            //DriverManager.getConnection()方法,连接MySQL数据库!
            conn=DriverManager.getConnection(url,username,password);
            if(!conn.isClosed())
            System.out.println("数据库连接成功!");
            
             //创建statement类对象,用来执行SQL语句!
            Statement Statement=conn.createStatement();
            //要执行的SQL语句
            String sql="select * from grade" ;
            //ResultSet类,用来存放获取的结果集!
            ResultSet rs=Statement.executeQuery(sql);
             System.out.println("-------------------------------");
             System.out.println("执行结果如下所示:");  
             System.out.println("-------------------------------");  
             System.out.println("学号" + "\t" + "姓名"+"\t"+"数学成绩"+"\t"+"语文成绩");  
             System.out.println("-------------------------------");  
             String id=null;
             String name=null;
             String math=null;
             String chinese=null;
             while(rs.next()){
                //获取‘学号’这列数据
                 id=rs.getString("学号");
                 //获取‘姓名’这列数据
                name=rs.getString("姓名");
                //获取‘数学成绩’这列数据
                math=rs.getString("数学成绩");
                //获取‘语文成绩’这列数据
                chinese=rs.getString("语文成绩");
                //输出结果
                System.out.println(id+"\t"+name+"\t"+math+"\t"+chinese);
             }
             rs.close();
             conn.close();
         }
         catch(ClassNotFoundException e){
             //数据库驱动类异常处理
        System.out.println("数据库驱动加载失败!");
        e.printStackTrace();
         }
        catch(SQLException e1){
        //数据库连接失败异常处理
         e1.printStackTrace();
        }
        catch(Exception e2){
        e2.printStackTrace();
        }
        finally{
             System.out.println("-------------------------------");  
            System.out.println("数据库数据获取成功!");
        }
        }
        }

后注:
若连接MySQL数据库中出现:Public Key Retrieval is not allowed(不允许解锁公钥)
解决方法:
源代码:

String url = "jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC";

改为:

String url = "jdbc:mysql://localhost:3306/test&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

也就是在其后添加:

allowPublicKeyRetrieval=true

转载自:https://blog.csdn.net/yangdan1025/article/details/80591012

发布了34 篇原创文章 · 获赞 7 · 访问量 2223

猜你喜欢

转载自blog.csdn.net/qq_37717494/article/details/84337253