「已注销」 2014-10-29 07:21 采纳率: 0%
浏览 665

请问大神这个程序问题出在哪里啊

这样是没问题的
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC {
public static void main(String[] args) throws ClassNotFoundException,SQLException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=HYGJ_0922";
Connection conn = DriverManager.getConnection(url, "sa", "123");z
Statement smst = conn.createStatement();
ResultSet rs = smst.executeQuery("select * from TBL_COURSE");
while (rs.next()) {
System.out.print(rs.getString("COU_NO") + ":");
System.out.println(rs.getString("COU_NAME"));
}
rs.close();
smst.close();
conn.close();
}
}
但是加上TRY语句块的话 就会报错
java.sql.SQLException: No suitable driver found for jdbc:sqlserver:localhost:1433;DatabaseName=HYGJ_0922
代码如下,谢谢大神
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC2 {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url = "jdbc:sqlserver:localhost:1433;DatabaseName=HYGJ_0922";
        conn = DriverManager.getConnection(url, "sa", "123");
        stmt = conn.createStatement();
        rs = stmt.executeQuery("select * from TBL_COURSE");

        while (rs.next()) {
            System.out.println("TRE_NAME");
        }

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stmt != null) {
                stmt.close();
                stmt = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 23:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这段代码在尝试使用SQL Server驱动连接到数据库时出现了错误。主要的问题在于try-catch-finally块中没有正确关闭所有资源。

    以下是修复后的代码:

    import java.sql.Connection;
    
    import java.sql.DriverManager;
    
    import java.sql.ResultSet;
    
    import java.sql.SQLException;
    
    import java.sql.Statement;
    
    public class TestJDBC2 {
    
        public static void main(String[] args) {
    
            try (Connection conn = DriverManager.getConnection(
                    "jdbc:sqlserver://localhost:1433;DatabaseName=HYGJ_0922",
                    "sa", "123")) {
    
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM TBL_COURSE");
    
                while (rs.next()) {
                    System.out.println("TRE_NAME");
                }
    
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (rs != null) {
                        rs.close();
                    }
                    if (stmt != null) {
                        stmt.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException ex) {
                    // Handle any exceptions that may occur during resource cleanup.
                }
            }
        }
    }
    

    在这个修复后的版本中,我添加了try-with-resources语句来自动管理资源。这确保了当try块结束时,所有的资源都会被正确地关闭。

    评论

报告相同问题?