救命啊!! oracle 连接问题
我用c# + .net framework provider for oracle,我的程序是一个数据接收程序,需要常驻内存不停的运行,将接收到的数据写入到oracle 数据库中。
如果数据库和网络条件都正常,则程序运行良好。但现在问题是,如果网络断了,或数据库重新启动了,则数据库连接就再也不能用了,重新创建数据库连接对象都不可以,报“未连接oracle ”错误!除非重新启动数据接收进程!
我写的保存数据程序如下
public int saveData(string aa)
{
OracleConnection conn=new ....
conn.open();
try{
........
}
finaly
{
conn.close()
}
}
问题点数:100、回复次数:14Top
1 楼cnwolfs(cnwolfs)回复于 2003-11-01 09:13:07 得分 10
public int saveData(string aa)
{
try
{
OracleConnection conn=new ....
conn.open();
try
{
........
}
catch
{
conn.close()
}
}
catch
{
}
}
Top
2 楼513(513)回复于 2003-11-01 09:18:33 得分 10
OracleConnection conn?
什么东东?不是它有问题吧Top
3 楼yongwc(疯狂客)回复于 2003-11-01 09:53:47 得分 0
OracleConnection 是微软提供的 访问oracle 数据库,类是与ado.net ,SqlConnection
只要网络不断,它都可以正常工作,如果拔网线再连上就不行了Top
4 楼yongwc(疯狂客)回复于 2003-11-01 09:58:09 得分 0
初步认为是连接池的原因,.net 里面连接池是由 framework 提供的,而这里程序控制不到。
其实连接已经中断,但连接池还将该连接提供出来,所以执行不了,但是找不到任何方法控制连接池!
不知是不是这样?Top
5 楼rgbcn(奔向.net)回复于 2003-11-01 10:02:25 得分 10
conn.Dispose() //加收试试Top
6 楼rgbcn(奔向.net)回复于 2003-11-01 10:02:35 得分 0
回收Top
7 楼513(513)回复于 2003-11-01 10:10:04 得分 0
是这样呀,谢谢。
不像。net要处理的,解决办法可能在oracal
Top
8 楼yongwc(疯狂客)回复于 2003-11-01 10:12:05 得分 0
已经试过了,不行,加GC.supressfinally(connection) 也不行Top
9 楼cnming(cnming)回复于 2003-11-01 11:06:02 得分 0
前提是每次都有一个新连接Top
10 楼yongwc(疯狂客)回复于 2003-11-01 11:34:13 得分 0
如何取得新连接?Top
11 楼91bct(Jerry)回复于 2003-11-01 12:02:33 得分 30
[未连接oracle ”错误]
这个问题我也碰到过,到现在也不清楚有什么好的解决办法,因为使用的是try...catch
所以在catch中弹出的对话框中我选择忽略,让程序继续运行,这样又正常了,我就不用[重新启动程序]。
Top
12 楼91bct(Jerry)回复于 2003-11-01 12:13:58 得分 10
我刚刚有试了一下,在连续两次的忽略之后又可以正常取得连接并读取出数据。
第一次错误提示是:连接失败,因为目标主机或对象不存在。
第二次错误提示是:没有监听...
所以我认为这样可以不必重新启动程序...Top
13 楼zhangzgl(老张)回复于 2003-11-01 14:49:23 得分 30
建议你在页面的类中添加一个构造函数,在构造函数中初始化连接数据库,先打开一次,然后在关闭一次;然后在catch块中加人conn.Dispose() ;然后在打开数据库,就行Top
14 楼yongwc(疯狂客)回复于 2003-11-01 19:50:38 得分 0
to:91bct
我的程序在运行的时候是没有人在旁边看的,所以,用忽略的方法解决不了这个问题
to zhangzgl:
我的程序是windows form 程序,在asp.net 中没有这个问题!Top




