关于c#连接oracle数据库

benjerry 2011-11-28 10:11:53
首先,我不是太懂oracle的连接方式,不过也稍微用过几次。遇到过一个很奇怪的问题。 数据库在我其中一台服务器上
tns的内容为(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = lisdb)
)
)

然后我用的是vs2010的oracle client连接
我的连接字符串的写法是:
datasouce=<server>(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = lisdb)
)
);user=×× password=××



现在的问题在于我在其他一台装了oracle 客户端的电脑上,打开程序是没有问题的。连接有效
说明我的连接字符串应该没写错

但是很奇怪的是,我在服务器那台机器本身上使用程序,却会报找不到table的报错。而服务器那台机器上面的netmanager里面,测试连接,也是通过的。说明服务器那台机器应该也装有oracle的client的相关程序吧?

就不知道为什么c#连接数据库的程序在服务器本身上运行就有问题了。
那个数据库是oralce 10.2g


...全文
557 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjerry 2011-11-30
  • 打赏
  • 举报
回复
还是没找到真正的根源。我猜测也许是数据库服务器那台电脑上的客户端软件可能安装存在问题。但是由于数据库事关重大,也不敢在上面重装或者再装一个版本。不过大家的解答对我还是很有帮助的,谢谢了
benjerry 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mjp1234airen4385 的回复:]

应该是没有问题的。
再不,你把连接串换成192.168.7.14《=localhost
[/Quote]

变成

(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = lisdb)
)
)


这样吗?
zincy 2011-11-28
  • 打赏
  • 举报
回复
你用PLSQL查询能不能找不到那张表,表名最好都用大写。
还有你可以用企业库来操作 Oracle

微软企业库5.0 学习之路系列文章索引:
[EntLib]微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目
http://www.cnblogs.com/kyo-yo/archive/2010/06/10/learning-entlib-second.html
mjp1234airen4385 2011-11-28
  • 打赏
  • 举报
回复
应该是没有问题的。
再不,你把连接串换成192.168.7.14《=localhost
benjerry 2011-11-28
  • 打赏
  • 举报
回复
不可能是不同的db,我出错的那台机器是服务器本身。也就是数据库就在它上面。
PaulyJiang 2011-11-28
  • 打赏
  • 举报
回复
你在出错的那台机器上测试下,用登陆的账号密码进去SQL_PLUS看看能不能找到对应的table

可能是机器的域有问题 连接的不是同一个DB
benjerry 2011-11-28
  • 打赏
  • 举报
回复
.net有没有不用装oracle client的方法,能够连接到oralce的。
benjerry 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xfreyes 的回复:]

你的 datasouce 拼错了,而且中间不要有换行
[/Quote]


这个呢,我可能打上来打错了。因为很显然这个连接字符串本身肯定是没有问题的。因为它在另外一台客户端上跑过的。是没问题的。
dingshanwei123 2011-11-28
  • 打赏
  • 举报
回复
<add name="sqlconn" connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 121.194.86.170)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = CGEF)));User ID=system;Password=123456;Unicode=True" providerName="System.Data.OracleClient"/>
这是客户端连接服务器的例子
xfreyes 2011-11-28
  • 打赏
  • 举报
回复
你的 datasouce 拼错了,而且中间不要有换行
dingshanwei123 2011-11-28
  • 打赏
  • 举报
回复
datasouce=<server>(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = lisdb)
)
);user=×× password=××

你服务器本机也是用这个字符串连的吗?是的话你还是改成Data Source=CGEF;Persist Security Info=True;User ID=system;Password=123456;Unicode=True这种形式的,不要用ip地址连试试
benjerry 2011-11-28
  • 打赏
  • 举报
回复
还有楼上的高手, 能不能给我一个oledb连接的例子?谢谢了
xfreyes 2011-11-28
  • 打赏
  • 举报
回复

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.7.14)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=lisdb)));user id=xx;password=xx;min pool size=4;max pool size=100;enlist=false


把用户密码填好 试试
benjerry 2011-11-28
  • 打赏
  • 举报
回复
服务器端不是自动安装oralce client的吗?难道服务器端没有装oralce client?
tigerleq 2011-11-28
  • 打赏
  • 举报
回复
oralce 客户端必须 安装
不然 使用其他 连接 方式 比如oledb
benjerry 2011-11-28
  • 打赏
  • 举报
回复
是同一用户,而且我每个客户端里面的哦netmanger的配置都一样的,所以别名也都是一样的
xfreyes 2011-11-28
  • 打赏
  • 举报
回复
你客户端和你C#里用的是不是同一个用户?
benjerry 2011-11-28
  • 打赏
  • 举报
回复
关键是那台服务器数据库本身上运行程序都报错。但是其他我零零散散装的一些客户端运行起来是没问题的。难道服务器端的数据库,本身对oracle client的访问方式有问题吗?这个太奇怪了。
allen0118 2011-11-28
  • 打赏
  • 举报
回复
这个连接数据库跟VS没有太大关系吧,要访问服务器上面的Oracle数据库就一定要安装客户端,我在之前的公司里面开发的Web应用系统采用的Oracle 10G数据库,用户的电脑上面都安装了一个客户端,貌似这个必须的。
benjerry 2011-11-28
  • 打赏
  • 举报
回复
我现在用个蠢办法,暂时解决了这个问题。在一台sql数据库上建了个链接服务器。。。。直接去查询那个sql的视图。。。。
不过我还是希望能找到不用安装客户端,直接访问oracle的解决方案就好了。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧