提供者 OraOLEDB.Oracle 未注册

我正在尝试将我的数据库与我的 asp.net Web 表单连接,但是当我插入它以尝试连接时,我遇到了这个错误

      OleDbConnection con = new OleDbConnection("Provider=OraOLEDB.Oracle;USER ID=C##FABIO;DATA SOURCE=ORCL");

    //aggiungi un elemento alla tabella ESAMI
    protected void Button1_Click(object sender, EventArgs e)
    {
        con.Open();
        OleDbCommand cmd = new OleDbCommand("Insert into ESAMI(CODICE_ESAME,NOME_ESAME,ANAGRAFICA_CODICE_FISCALE) VALUES('" + codice_esame_text.Text + "','" + nome_esame_text.Text + "','" + codice_fiscale_text.Text + "') WHERE ANAGRAFICA_CODICE_FISCALE = '" + codice_fiscale_text.Text + "'",con);
        cmd.ExecuteNonQuery();
        con.Close();

如何添加 oracle 提供程序?

stack overflow Provider OraOLEDB.Oracle not registered
原文答案

答案:

作者头像

从字面上看,这意味着 OleDB Provider for Oracle 没有注册,你可以注册它

%windir%System32RegSvr32.exe "<path of OraOLEDB11.DLL 64-bit version>"
%windir%SysWOW64RegSvr32.exe "<path of OraOLEDB11.DLL 32-bit version>"

但是,通常这不是问题的根本原因。在大多数情况下,根本没有安装 OleDB Provider。裸 Oracle Instant 客户端不包括 Oracle Provider for OLE DB,要么单独安装,要么需要在 Oracle Universal Installer 中启用组件。

您可以从此处下载适用于 OLE DB 的 Oracle 提供程序:

请注意,架构,即 32 位与 64 位必须与您的编译器设置匹配,您不能混合使用。人们经常混合使用 32 位和 64 位版本,它们的名称和外观相同。

Oracle Provider for OLE DB(例如 12.2)的版本必须与 Oracle 客户端的版本匹配。您只能安装一个版本的 Oracle Provider for OLE DB(即 32 位和 64 位各一个),这是 Windows COM 体系结构的限制。因此,请仔细运行您的安装。

作者头像

从命令行(ODAC183Xcopy_x64.zip -> install.bat)安装 odac 时,我注意到路径已更新(echo %path%)以包含 oracle bin 文件夹,所以我认为一切都应该是工作,但仍然收到 Provider OraOLEDB.Oracle not registered 错误消息,然后我注意到如果我打开一个新的命令提示符窗口,oracle bin 文件夹的路径不再包含在 windows 路径中,所以我不得不手动添加oracle 和 oracle bin 文件夹的路径到 Windows 路径环境变量。

相关问题