【问题标题】:Unable to Execute a sql query on java using jdbc无法使用 jdbc 在 java 上执行 sql 查询
【发布时间】:2017-04-28 21:57:12
【问题描述】:

我正在学习 JDBC 并尝试使用 IDE Eclipse 在 Java 上执行 sql 查询。正在加载 jdbc 驱动程序并建立连接,但是查询没有运行。

import java.sql.*;
public class JDBCDemo {
public static void main(String[] args) {
    String url="jdbc:oracle:thin:@//localhost:1521/xe";
    String un="system";
    String pwd="system";
    Connection con=null;
    Statement stmt=null;
    ResultSet res=null;
    try{
        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
        System.out.println("Driver Loaded successfully");
    }
    catch(Exception e)
    {
        System.out.println("Driver not loaded");
    }
    try{
        DriverManager.getConnection(url,un,pwd);
        System.out.println("Connection established");
    }
    catch(Exception f)
    {
        System.out.println("Connection not established");
    }
    try{
        String s="Select * from student";
        stmt=con.createStatement();
        res=stmt.executeQuery(s);
        System.out.println("Query executed succesfully");
    }
    catch(Exception e)
    {
        System.out.println("Query not executed");
    }  

输出是: 驱动加载成功

连接建立

查询未执行

【问题讨论】:

  • 为了人类的爱,请打印堆栈跟踪或记录您的异常:e.printStackTrace(System.err);

标签: java sql jdbc oracle11g


【解决方案1】:

您收到异常是因为您尚未初始化已声明的连接引用。

修改你的DriverManager.getConnection(...)如下:

con = DriverManager.getConnection(...).

如果有帮助,请告诉我。

【讨论】:

    【解决方案2】:

    查看 O.P. 如何解决此问题的另一种方式。不必要地初始化变量可能会让您忘记正确设置它们。它会破坏编译器在使用之前是否已设置所有本地变量的检查。

    Connection con=null;
    try {
        con = ...;
        ...;
    } finally {
        if(con != null) con.close();
    }
    

    这会有更多的编译器检查:

    Connection con = ...;
    try {
        Statement stmt = con...;
        try {
            ResultSet rst = stmt...;
            try {
                ...;
            } finally {
                rst.close();
            }
        } finally {
            stmt.close();
        }
    } finally {
        con.close();
    }
    

    或者,在 Java 1.7+ 中:

    try (
        Connection con = ...;
        Statement stmt = con...;
        ResultSet res = stmt...;
    ) {
       ...;
    }
    

    请参阅Java Practices -> Don't declare local variables before use 进一步阅读。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多