日期:2014-05-17  浏览次数:21327 次

求助,由于连接数据库老是失败,所以写了个死循环来进行数据库连接,但是还是会失败
急求解决方案,不知道是循环写的有问题还是其他的问题
死循环代码如下:

Connection conn1 = null;
//getDbConnection db1 = new getDbConnection();
//Connection conn1 = db1.getConn();
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
while(true){
conn1 = DriverManager.getConnection("jdbc:oracle:thin:@132.232.36.137:1521:manage", "server","server");
if(conn1!=null){
// System.out.println("异常数据没有导入成功:"+info.getDEST_NUM()+"------------------------------------------------------");
break;
   }
}
/* DriverManager.setLoginTimeout(600);
conn1 = DriverManager.getConnection("jdbc:oracle:thin:@132.232.33.133:1521:manage1", "server1","server1");

*/
PreparedStatement ps = conn1.prepareStatement(sql);
result = 0;

------解决方案--------------------
引用:
答楼上所有人:谢谢各位了,

1.远程是可以的,ip是可以ping通的
2.连接字符串是没有问题的,因为有时候可以连接,有时候连接不上。
3.数据库没有问题的,可以通过客户端连接的。

因为是要向数据库里边插入excel数据,写了一个循环来进行读取excel表格到本地,然后再本地读取每条数据插入数据库,插入是利用循环,就是读一条数据,向数据库请求连接,然后插入数据,最后释放,然后再进行下一条数据插入循环,
可是有时候可以完全导入成功,有时候会失败,报错,数据库连接不上。网络问题基本可以排除

这个问题很正常,你读一条就打开一次,看看有时候网络延迟,导致记录没加载到,但是又打开链接,你最好把数据先加载过来,然后批处理一次搞掂吧,这样保险,用try catch回滚下或者跳过继续面的,大概如此了
------解决方案--------------------
在一个连接内完成操作。

如果中断,做日志记录,继续连接,从中断点开始操作。
------解决方案--------------------
引用:
Quote: 引用:

不用写循环,连接看报什么错误,跟着错误去检查修改就是了。
先保证数据库没问题,通过客户端先连接下,然后再通过java代码去连接。


谢谢,我写了问题的详细,麻烦请您看下。 在 4楼
有时候时部分失败,还是全部失败呢?楼主可以贴一些代码出来,看是否不同的流程中,哪里把数据库连接关闭掉了。
------解决方案--------------------
引用:
失败就是执行了一部分数据后,然后报数据连接失败,然后写库就终止了,不在继续执行。难道非得一次性写入才可以?我想知道为什么上边的死循环都可以跳出来呢。
 上面的死循环只是保证连接上数据库,连接上之后,

while(true){
                conn1 = DriverManager.getConnection("jdbc:oracle:thin:@132.232.36.137:1521:manage", "server","server");
                if(conn1!=null){
//                    System.out.println("异常数据没有导入成功:"+info.getDEST_NUM()+"------------------------------------------------------");