C#连接局域网ORACLE数据库及查询问题

7年 2010-03-26 09:53:16
我是新手,刚接触C#和ORACLE。现在有点问题问问大家,希望大家帮助。
1.C#如何连接局域网的ORACLE数据库?我写的
string connectionstring = "Data Source=192.168.35.51,user=test1,password=123";
OracleConnection cnn = new OracleConnection();
cnn.ConnectionString = connectionstring;
try
{
cnn.Open();
}
catch
{
MessageBox.show("error");
}
finally
{
cnn.Close();
}
一直提示error,请问connectionstring该怎么写?
2.有3个表
用户表
ID USERNAME
权限表
ID RIGHTNAME
用户权限表
ID USERID RIGHTID

想根据用户表的USERNAME来显示他的权限,用户表和权限表是多对多的关系,
如何在另一个窗体显示他的权限呢?
...全文
380 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
7年 2010-03-26
  • 打赏
  • 举报
回复
3Q,重做系统了,但愿好用了。
段传涛 2010-03-26
  • 打赏
  • 举报
回复
英文出错提示:Could not create an environment: OCIEnvCreate returned -1
中文出错提示:OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

解决方案一:
主要是将oracle主目录oracle\的读写权限赋予asp.net或者是IUSER_..和IWAM_..,重启计算机。

解决二:

打开在IIS中的WEB属性--主目录--执行权限【改为-脚本和可执行文件】;

-应用程序池【改为-MSSharePointAppPool】,刷新OK;

7年 2010-03-26
  • 打赏
  • 举报
回复
现在控件连接就提示“OCIENVCREATE失败,返回代码为-1,但错误消息文本不可用”
我解决不了了
段传涛 2010-03-26
  • 打赏
  • 举报
回复
不会 是计算机的问题, 就是连接字符串的事,顶多是数据源。
耐心的再试试。
7年 2010-03-26
  • 打赏
  • 举报
回复
可能是我机器的问题,别的电脑都能连上,先谢谢大家。
7年 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jason_dct 的回复:]
如果不用 webconfig
就直接写字符串
Provider = MSDAORA.1; Data Source = TWIN; User ID =cy_hsp_yxt; Password =yxt"
试试 如果再不行 我给你完整代码。
[/Quote]
提示PROVIDER不可用。。。。。。
还有,我拖了个数据控件添加数据源,测试连接接直接出现错误。。。。。完了VS2005就关闭了。
提示OCIENVCREATE失败,返回代码为-1,但错误消息文本不可用
Fibona 2010-03-26
  • 打赏
  • 举报
回复
C# 连接服务器,首先要配置Orcle客户端的本地监听,

连接串一般可以参考tnsnames.ora里面写,

string oradb = "Data Source=OraDb;User Id=scott;Password=tiger;"; // C#

或者直接用Ora的连接信息做为数据源

string oradb = "Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ORASRVR)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
+ "User Id=scott;Password=tiger;";


参考:
http://www.oracle.com/technology/pub/articles/cook_dotnet.html
段传涛 2010-03-26
  • 打赏
  • 举报
回复
string connectionstring = "Provider = MSDAORA.1; Data Source = 192.168.35.51; User ID =test1; Password =123";
OleDbConnection cnn = new OleDbConnection(connectionstring);
try
{
cnn.Open();
}
catch
{
MessageBox.show("error");
}
finally
{
cnn.Close();
}
7年 2010-03-26
  • 打赏
  • 举报
回复
回楼上的,没看明白。。。。。
段传涛 2010-03-26
  • 打赏
  • 举报
回复
如果不用 webconfig
就直接写字符串
Provider = MSDAORA.1; Data Source = TWIN; User ID =cy_hsp_yxt; Password =yxt"
试试 如果再不行 我给你完整代码。
段传涛 2010-03-26
  • 打赏
  • 举报
回复
cs
#region oracle数据连接相关
/// <summary>
/// oracleconnection
/// oracon 数据连接参数
/// </summary>
public void oleOpen()
{
string orastr = ConfigurationManager.AppSettings["olecon"];
oledbcon = new OleDbConnection(orastr);
oledbcon.Open();
}
#endregion
----------------------------------------webconfig
<add key="olecon" value="Provider = MSDAORA.1; Data Source = TWIN; User ID =cy_hsp_yxt; Password =yxt"/>
7年 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jason_dct 的回复:]
1.C#如何连接局域网的ORACLE数据库?我写的
--------------你的写法没有问题,看看你的计算机有没有安装 oracle客户端,安装之后看看有没有连接上
2, 是不是按照tnsnames.ora里面写的就可以?
---------------最好要安装完整的客户端 ,然后测试是否联通
3,至于你后面的表的操作 就极其简单了。
[/Quote]
我安装的精简版客户端。在PLSQL可以连接。
段传涛 2010-03-26
  • 打赏
  • 举报
回复
1.C#如何连接局域网的ORACLE数据库?我写的
--------------你的写法没有问题,看看你的计算机有没有安装 oracle客户端,安装之后看看有没有连接上
2, 是不是按照tnsnames.ora里面写的就可以?
---------------最好要安装完整的客户端 ,然后测试是否联通
3,至于你后面的表的操作 就极其简单了。
lxf67833508 2010-03-26
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
SQLDMO.ApplicationClass sqlC = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlList = sqlC.ListAvailableSQLServers();
for(int i=1;i<=sqlList .Count;i++)
{
comboBox1 .Items .Add (sqlList .Item(i) );
}
}



private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SQLDMO.SQLServer sqlserve= new SQLDMO.SQLServer ();
sqlserve.Connect(".","sa","123456");
foreach (SQLDMO.Database db in sqlserve.Databases)
{
if (db.Name != null)
this.comboBox2.Items.Add(db.Name);
}
this.comboBox2.Sorted = true;
if (comboBox2.Items.Count > 0)
{
this.comboBox2.SelectedIndex = 0;
this.comboBox2.Enabled = true;
}
else
{
this.comboBox2.Enabled = false;
this.comboBox2.Text = "no found databases";
}
}

这是我写的一个连接局域网所有数据库的的一段程序。。。希望对你有所帮助。
7年 2010-03-26
  • 打赏
  • 举报
回复
是不是按照tnsnames.ora里面写的就可以?
zgke 2010-03-26
  • 打赏
  • 举报
回复
你的连接有问题把

安装ORACLE客户端了


Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.35.51)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=服务名称)));User Id=test1;Password=123;

如果你的ORACLE是根据SID连接的 那SERVICE_NAME=服务名称 改成 SID=SID名

111,093

社区成员

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

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

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