[英]Java connecting to DB2 Hangs
我正在尝试一个试点项目来查询和写入DB2数据库。 我在StackOverFlow和网络上看到了许多示例。 但是由于某种原因,我的应用程序在连接数据库时就挂起了。 我尝试了不同的驱动程序,但仍得到相同的结果。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class DBManager {
public DBManager()
{
try
{
Class.forName("com.ibm.db2.jcc.DB2Driver");
}
catch (ClassNotFoundException e)
{
System.out.println("Please include Classpath Where your DB2 Driver is located");
e.printStackTrace();
return;
}
System.out.println("DB2 driver is loaded successfully");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rset=null;
boolean found=false;
try
{
System.out.println("DB2 Database Connecting...");
conn = DriverManager.getConnection("jdbc:db2://Hostname:8471/Databasename","user","password");
if (conn != null)
{
System.out.println("DB2 Database Connected");
}
else
{
System.out.println("Db2 connection Failed ");
}
pstmt=conn.prepareStatement("SELECT * FROM P6DEVCDB00.ADCP FETCH FIRST 10 ROWS ONLY");
rset=pstmt.executeQuery();
if(rset!=null)
{
while(rset.next())
{
found=true;
System.out.println("ID: "+rset.getString("ADCONTID"));
}
}
if (found ==false)
{
System.out.println("No Information Found");
}
}
catch (SQLException e)
{
System.out.println("DB2 Database connection Failed");
e.printStackTrace();
return;
}
}
}
UPDATED应用程序挂起,没有异常
conn = DriverManager.getConnection(.
我也尝试过使用不同的端口号,但是某些错误(异常会有所不同)和其他错误都挂起了。
查看您的程序,您需要关闭连接资源。
catch (SQLException e)
{
System.out.println("DB2 Database connection Failed");
e.printStackTrace();
try{
rset.close();
pstmt.close();
conn.close();
}catch(SQLException e2){
System.err.println("Unable to close database resources");
e2.printStackTrace();
}
}
另外,您不需要在catch语句中“返回”。 捕获块用于无例外的程序流,并且不是通过“返回”在捕获内再次使用突然中断代码的好习惯。
我的连接字符串错误。 我需要包括服务器的域。 "jdbc:db2://Hostname/Databasename"
必须是"jdbc:db2://Hostname.domain/Databasename"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.