繁体   English   中英

无法使用jdbc在Java上执行SQL查询

[英]Unable to Execute a sql query on java using jdbc

我正在学习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");
    }  

输出为:驱动程序加载成功

连接已建立

查询未执行

由于您尚未初始化声明的Connection引用,因此出现异常。

修改您的DriverManager.getConnection(...) ,如下所示:

con = DriverManager.getConnection(...)

让我知道是否有帮助。

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

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->在进一步阅读之前不要声明局部变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM