会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133532个问题
JAVA 全系列/第八阶段:生产环境部署与协同开发/Docker 8373楼

jdbcdemo.zip


运行添加后一直报错,我直接把代码复制上去也不行,测试数据库连接是正常的

image.png

image.png


java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "connection" is null

at com.itbaizhan.StatementTest.insertUsers(StatementTest.java:22)

at com.itbaizhan.Test.main(Test.java:6)

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.sql.Statement.close()" because "statement" is null

at com.itbaizhan.JdbcUtils.closeStatement(JdbcUtils.java:64)

at com.itbaizhan.JdbcUtils.closeResource(JdbcUtils.java:78)

at com.itbaizhan.StatementTest.insertUsers(StatementTest.java:31)

at com.itbaizhan.Test.main(Test.java:6)


Process finished with exit code 1


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

我这边statement的部份一直报错是我少引用了什么吗?

public static void closeStatement(Statement statement){
    try {
        statement.close();
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
}



package com.itbaizhan;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * Jdbc tool class
 */
public class JdbcUtils {
    private static String url;
    private static String name;
    private static String pwd;
    static {
        try {
            Properties prop = new Properties();
            InputStream is = JdbTest2.class.getClassLoader().getResourceAsStream("jdbc.properties");
            prop.load(is);

            url = prop.getProperty("url");
            name = prop.getProperty("username");
            pwd = prop.getProperty("pwd");
            String drivername = prop.getProperty("driver");

            Class.forName(drivername);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //acquire database connection object
    public static Connection getConnection(){
        Connection connection = null;
        try {
            DriverManager.getConnection(url,name,pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
    public static void closeConnection(Connection connection){
        try {
            connection.close();
        }catch (SQLException throwables){
            throwables.printStackTrace();
        }

        public static void commit(Connection connection){
            try {
                connection.commit();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        public static void rollback(Connection connection){
            try {
                connection.rollback();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        public static void closeStatement(Statement statement){
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 8375楼
JAVA 全系列/第十二阶段:消息中间件与高并发处理/RocketMQ(旧) 8377楼
JAVA 全系列/第十二阶段:消息中间件与高并发处理/RocketMQ(旧) 8378楼
WEB前端全系列/第二十阶段:Git版本控制器/版本控制器Git与SVN 8379楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 8381楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 8382楼

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver import ChromeOptions
from time import sleep

# 将浏览器设置为无头模式
def test_headless():
    # 设置参数,将浏览器设置为无头浏览器
    option = ChromeOptions()  # 设置属性
    option.add_argument('--headless')  # 增加内容

    # 设置驱动
    s = Service(executable_path='./chromedriver.exe')
    # 启动Chrome浏览器
    driver = webdriver.Chrome(service=s,options=option)
    # 访问页面
    driver.get('http://www.baidu.com')
    # 打印代码
    print(driver.page_source)
    # 关闭浏览器
    driver.quit()


# 给浏览器增加代理
def test_proxy1():
    # 设置参数,将浏览器设置为无头浏览器
    option = ChromeOptions()
    # 设置属性option.add_argument('--proxy-server=ip:port')
    option.add_argument('--proxy-server=http://221.199.36.122:35414')  # 增加内容

    # 设置驱动
    s = Service(executable_path='./chromedriver.exe')
    # 启动Chrome浏览器
    driver = webdriver.Chrome(service=s,options=option)
    # 访问页面
    driver.get('http://httpbin.org/get')
    # 打印代码
    print(driver.page_source)
    # 关闭浏览器
    driver.quit()


# 防止检测
def test_find():
    # 老版
    options = ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable - automation'])
    options.add_experimental_option('useAutomationExtension', False)

    # 新版
    chrome = webdriver.Chrome(chrome_options=options)
    chrome.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
       Object.defineProperty(navigator,
    'webdriver', {
       get: () => false
       })
     """
    })
    chrome.get('http://httpbin.org/get')
    info = chrome.page_source
    print(info)
    sleep(100)



if __name__ == '__main__':
    test_find()

是这样的

Python 全系列/第十六阶段:Python 爬虫开发/爬虫基础 8383楼
JAVA 全系列/第九阶段:SpringBoot与MybatisPlus/Spring Boot旧 8384楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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