会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133306个问题
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 197楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 198楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 199楼

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

/**
 * Druid连接池测试类
 */
public class DruidTest {
    public static void main(String[] args) throws Exception {
        //获取读取druid配置的字节输入流
        InputStream is = DruidTest.class.getClassLoader().getResourceAsStream("druid.properties");
        //创建Properties对象
        Properties pos = new Properties();
        //加载配置文件
        pos.load(is);
        //获取连接池对象
        DataSource ds = DruidDataSourceFactory.createDataSource(pos);

        //获取连接
        Connection connection = ds.getConnection();
        System.out.println(connection);
    }
}

运行结果:

十月 29, 2022 7:13:09 下午 com.alibaba.druid.pool.DruidDataSource error

严重: {dataSource-1} init error

java.sql.SQLException: come.musql.jdbc.Driver

at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:683)

at com.alibaba.druid.pool.DruidDataSource.resolveDriver(DruidDataSource.java:1222)

at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:891)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1401)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1397)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:100)

at com.Han.DruidTest.main(DruidTest.java:25)

Caused by: java.lang.ClassNotFoundException: come.musql.jdbc.Driver

at java.net.URLClassLoader.findClass(URLClassLoader.java:382)

at java.lang.ClassLoader.loadClass(ClassLoader.java:418)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)

at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:681)

... 6 more


Exception in thread "main" java.sql.SQLException: come.musql.jdbc.Driver

at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:683)

at com.alibaba.druid.pool.DruidDataSource.resolveDriver(DruidDataSource.java:1222)

at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:891)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1401)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1397)

at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:100)

at com.Han.DruidTest.main(DruidTest.java:25)

Caused by: java.lang.ClassNotFoundException: come.musql.jdbc.Driver

at java.net.URLClassLoader.findClass(URLClassLoader.java:382)

at java.lang.ClassLoader.loadClass(ClassLoader.java:418)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)

at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:681)

... 6 more


Process finished with exit code 1


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 201楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/MySQL数据库 202楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/MySQL数据库 203楼

package com.mgj;

import java.sql.Date;

/**
 * 实体类,存放Employees表中的数据
 * */
public class Employees {
    int  employees_id ;
    String first_name;
    String last_name;
    String email;
    String phone_number;
    Date hire_date;
    String job_id;
    float salary;

    public int getEmployees_id() {
        return employees_id;
    }

    public void setEmployees_id(int employees_id) {
        this.employees_id = employees_id;
    }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone_number() {
        return phone_number;
    }

    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }

    public Date getHire_date() {
        return hire_date;
    }

    public void setHire_date(Date hire_date) {
        this.hire_date = hire_date;
    }

    public String getJob_id() {
        return job_id;
    }

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

    public float getSalary() {
        return salary;
    }

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

    @Override
    public String toString() {
        return "Employees{" +
                "employees_id=" + employees_id +
                ", first_name='" + first_name + '\'' +
                ", last_name='" + last_name + '\'' +
                ", email='" + email + '\'' +
                ", phone_number='" + phone_number + '\'' +
                ", hire_date=" + hire_date +
                ", job_id='" + job_id + '\'' +
                ", salary=" + salary +
                '}';
    }
}

----------------------------------------------------
package com.mgj;

import java.net.DatagramPacket;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 获取结果集测试类
 * */
public class ResultSetTest {

    /**
     * 查询所有用户
     * */
    public List<Employees> selectEmployeesAll(){

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        List<Employees> list = new ArrayList<>();
        try {
            //获取数据库连接
            connection = JdbcUtils.getConnection();
            //创建PreparedStatement对象
            preparedStatement = connection.prepareStatement("SELECT DISTINCT * FROM employees where salary>2000 ORDER BY SALARY DESC");
            //执行SQL语句
            resultSet = preparedStatement.executeQuery();
            //操作ResultSet对象获取查询的结果集
            while (resultSet.next()){
                int i = resultSet.getInt("employee_id");
                String str = resultSet.getString("first_name");
                String str2 = resultSet.getString("last_name");
                String str3 = resultSet.getString("email");
                String str4 = resultSet.getString("phone_number");
                Date date = resultSet.getDate("hire_date");
                String str6 = resultSet.getString("job_id");
                float fl = resultSet.getFloat("salary");
                //System.out.println(str+" "+str2+" "+str3+" "+str4+" "+date+" "+str6+"————"+fl);
                //ORM映射处理
                Employees employees = new Employees();
                employees.setEmployees_id(i);
                employees.setFirst_name(str);
                employees.setLast_name(str2);
                employees.setEmail(str3);
                employees.setPhone_number(str4);
                employees.setHire_date(date);
                employees.setJob_id(str6);
                employees.setSalary(fl);
                list.add(employees);

            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {

            JdbcUtils.closeResource(resultSet,preparedStatement,connection);

        }
        return list;
    }
}
-------------------------------------------
package com.mgj;

import java.util.List;

public class Test {


    public static void main(String[] args) {

       /* StatementTest st = new StatementTest();
        st.insertUsers("Mr.Meng_",23);
        st.updateUsers(4,"Mr.Meng",18);
        st.deleteUsersById(1);*/
        /*PreparedStatementTest pst = new PreparedStatementTest();
        //pst.insertUsers("Hello",19);
        //pst.updateUsersById(9,"World",26);
        pst.deleteUsersById(7);*/
        ResultSetTest resultSetTest = new ResultSetTest();
        //resultSetTest.selectEmployeesAll();
        List<Employees> list = resultSetTest.selectEmployeesAll();
        for (Employees employees:list){

            System.out.println(list);

        }
    }
}

老师,我用这种方法查询Employees表中的数据,况且我添加了distinct去重
为什么我拿到的数据全是重复的呢?

QQ截图20221026005458.png

JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 204楼

import java.sql.Connection;
import java.sql.Statement;

/**
 * Statement对象的使用
 */
public class StatementTest {
    /**
    * 添加用户
    */
    public void insetUsers(String username,int userage){
        Connection connection = null;
        Statement statement = null;
        try{
            //获取Connection对象。
            connection = JdbcUtils.getConnection();
            //获取Statement对象
            statement = connection.createStatement();
            //定义需要执行的SQL语句
            String sql = "inset into users values(default,'"+username+"',"+userage+")";
            //执行SQL,返回boolean值,如果sql有结果集返回,那么返回值为true,如果没有结果集返回,则返回false。
           boolean execute=statement.execute(sql);
            System.out.println(execute);
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally {
            JdbcUtils.closeResource(statement,connection);
        }
    }

}

import java.sql.Statement;

public class Test {
    public static void main(String[] args) {
        StatementTest st = new StatementTest() ;
        st.insetUsers("Oldlu",28);
    }
}

运行结果:

java.sql.SQLException: The url cannot be null

at java.sql.DriverManager.getConnection(DriverManager.java:649)

at java.sql.DriverManager.getConnection(DriverManager.java:247)

at com.Han.JdbcUtils.getConnection(JdbcUtils.java:43)

at com.Han.StatementTest.insetUsers(StatementTest.java:18)

at com.Han.Test.main(Test.java:8)

java.lang.NullPointerException

at com.Han.StatementTest.insetUsers(StatementTest.java:20)

at com.Han.Test.main(Test.java:8)

Exception in thread "main" java.lang.NullPointerException

at com.Han.JdbcUtils.closeStatement(JdbcUtils.java:76)

at com.Han.JdbcUtils.closeResource(JdbcUtils.java:92)

at com.Han.StatementTest.insetUsers(StatementTest.java:31)

at com.Han.Test.main(Test.java:8)


Process finished with exit code 1


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 205楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 207楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 208楼


jdbcTest2 {
    InputStream ;

    main(String[] args) IOException, ClassNotFoundException, SQLException {
        Properties prop = Properties();
        InputStream is = jdbcTest2..getClassLoader().getResourceAsStream();
        prop.load(is);
        String url = prop.getProperty();
        String name = prop.getProperty();
        String pwd = prop.getProperty();
        String drivername = prop.getProperty();
        Class.(drivername);
        Connection connection = DriverManager.(url,name,pwd);
        System..println(connection);
    }

}

一直报错,请问这个是什么情况啊?

"C:\Program Files\Java\jdk1.8.0_301\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.2\lib\idea_rt.jar=58786:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_301\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\rt.jar;C:\Users\zhangsiyu\IdeaProjects\mycode001\out\production\jdbcdemo;C:\Users\zhangsiyu\IdeaProjects\mycode001\jdbcdemo\lib\mysql-connector-java-5.1.48.jar" com.itbaizhan.jdbcTest2
Sun Oct 16 20:34:52 CST 2022 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 875 milliseconds ago.  The last packet sent successfully to the server was 858 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201)
	at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4869)
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1656)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2189)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2220)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2015)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.itbaizhan.jdbcTest2.main(jdbcTest2.java:34)
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
	at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
	at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:101)
	at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186)
	... 18 more

Process finished with exit code 1


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 209楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 210楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637