老师帮忙看一下代码,运行不出来

老师帮忙看一下代码,运行不出来

1
2
3
4
 driverClass=com.mysql.js.jdbc.Driver;
 url = mysql:jdbc:///jdbc?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8;
 user=root;
 password=marryme533;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.imooc.utils;
 
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
 
/*
 * JDBC的工具类
 
 * */
public class JDBCUtils {
    private static final String driverClass;
    private static final String url;
    private static final String user;
    private static final String password;
     
    static {
        //加载属性文件并解析
        Properties props = new Properties();
        //如何获得属性文件的输入流
        //通常情况下使用类的加载器的方式进行获取
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        try {
            props.load(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        driverClass = props.getProperty("driverClass");
        url = props.getProperty("url");
        user = props.getProperty("user");
        password = props.getProperty("password");
    }
    /*
     * 注册驱动的方法
     
     * */
    public static void loadDriver() throws ClassNotFoundException {
        Class.forName(driverClass);
    }
    /*
     * 获得连接的方法
     */
    public static Connection getConnection() throws Exception {
        loadDriver();
        Connection conn = DriverManager.getConnection(url, user, password);
        return conn;
    }
    /*
     * 资源释放
     */
    public static void release(Statement stmt,Connection conn) {
        if(stmt != null) {
            try {
                stmt.close();
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            stmt=null;
        }
        if(conn != null) {
            try {
                conn.close();
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn=null;
        }
    }
    public static void realease(ResultSet rs,Statement stmt,Connection conn) {
        if(stmt != null) {
            try {
                stmt.close();
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            stmt=null;
        }
        if(conn != null) {
            try {
                conn.close();
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn=null;
        }
        if(rs != null) {
            try {
                rs.close();
            }catch(SQLException e) {
                e.printStackTrace();
            }
            rs=null;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.imooc.jdbc;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
 
import org.junit.Test;
 
import com.imooc.utils.JDBCUtils;
 
/*
 * preparedStatemnet的使用
 */
public class JDBCDeno3 {
    @Test
    public void test3() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql="select * from goods";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while(rs.next()) {
                System.out.println(rs.getString("name"));
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.realease(rs, pstmt, conn);
        }
    }
    @Test
    public void demo3() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            //建立连接
            conn = JDBCUtils.getConnection();
            String sql="insert into goods values (null,?,?,?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1"微波炉");
            //pstmt.setString(2, "200.0");
            pstmt.setString(3"方便");
            pstmt.executeUpdate();
            rs = pstmt.executeQuery("select * from goods");
            while(rs.next()) {
                System.out.println(rs.getString("id"+"   "+rs.getString("name")+"   "+rs.getFloat("price")));
            }
             
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            //释放资源
            JDBCUtils.realease(rs, pstmt, conn);
        }
    }
}

报错:

java.lang.NoClassDefFoundError: Could not initialize class com.imooc.utils.JDBCUtils

at com.imooc.jdbc.JDBCDeno3.demo3(JDBCDeno3.java:59)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
慕神1152618 2018-10-30 00:25:02

这个好像是静态代码块初始化变量失败导致的,请将jdbc.properties放到src目录下,或者在使用时给出它路径

好帮手慕珊 2018-09-19 11:55:35

你好!运行了一下你的代码,并没有出现你的问题,错误提示中指出JDBCDemo3的59行报错,请问是代码中的哪一行呢?另外,执行上面test3方法有报错吗?

http://img1.sycdn.imooc.com//climg/5ba1c87c0001a20307690192.jpg

祝学习愉快!

一叶知秋519 2018-09-18 13:42:18

同学用的是mysql的哪个版本?导入的jar包是哪个版本?


  • 提问者 慕桂英8566455 #1
    sql8.0,jar包应该没导错,因为前面课程的代码能运行出来
    2018-09-19 09:37:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码