我正在尝试连接在Oracle 11g中创建的数据库。这是我想用来检查VS中的连接的简单代码,但它甚至不起作用:
OleDbConnection conn = new OleDbConnection("Provider=MSDAORA; Data Source = localhost; User ID = library; Password = library; Unicode = True");
private void button1_Click(object sender, EventArgs e)
{
conn.Open();
}
单击按钮时出现此错误:
System.Data.dll中出现未处理的“System.Data.OleDb.OleDbException”类型异常
其他信息:尝试检索错误ORA-01019的文本时出错
当我去服务器资源管理器时 - >添加连接并输入我的数据库信息,它工作正常,连接显示在服务器资源管理器中。
我在VS中也收到警告:
严重级代码描述项目文件行抑制状态 警告正在构建的项目“x86”的处理器体系结构与参考“Oracle.DataAccess,Version = 4.112.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342,processorArchitecture = AMD64”,“AMD64”的处理器体系结构不匹配”。这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用。 Biblioteka1
答案 0 :(得分:2)
我真的建议您使用Oracle的ODP.net。它在Oracle和.NET之间非常有效,并且可以利用Oracle Call Interface(OCI)提供的许多低级功能(例如批量插入/更新)。
从那里开始,ODP.net有一个OracleConnectionStringBuilder
类,它解决了大多数数据库遇到的连接字符串困难:
OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder();
sb.DataSource = "<your datasource>";
sb.UserID = "library";
sb.Password = "library";
OracleConnection conn = new OracleConnection(sb.ToString());
conn.Open();
如果您的数据库是远程的,Oracle的EZ Connect让您不必担心TNS名称:
sb.DataSource = "hostname.whatever.com:1521/ServiceName";