【问题标题】:Connect to oracle server using CDatabase from MFC使用 MFC 中的 CDatabase 连接到 oracle 服务器
【发布时间】:2017-11-13 13:47:39
【问题描述】:

我尝试连接到一个 oracle 数据库,其中服务器安装在我的笔记本电脑上并在端口 1521 上运行,名称为“orcl”。首先,我使用以下代码使用 Java 和 jdbc 进行连接:

private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USERNAME = "cosmin";
private static final String PASSWORD = "123456";
private static Connection conn;
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

现在我尝试使用 MFC 和 CDatabase 类进行连接,但我无法连接。

    CDatabase db;
    TRY{
        db.OpenEx(L"ODBC;DRIVER={MICROSOFT ODBC FOR ORACLE};DSN=orcl;SERVER=@localhost:1521:orcl;UID=cosmin; PWD=123456");

        db.Close();
    } CATCH(CDBException, e) {
        AfxMessageBox(L"Database error: " + e->m_strError);
    }

我收到下一个错误:未找到数据源名称且未指定默认驱动程序。我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 您是否创建了一个名为“orcl”的数据源,因为它在您的连接字符串中。下一个问题,你到底为什么要在 MFC 中编码?这是一项早已不复存在的技术。

标签: c++ oracle mfc cdatabase


【解决方案1】:

如果您要找我们data source nameHere 是获取工具的方法。

如果你想在你的程序中添加名字:

BOOL ret= SQLConfigDataSource(
    NULL,
    ODBC_ADD_DSN,
    (LPSTR) "Microsoft Access Driver (*.mdb)\0",
    (LPSTR) "DSN=MS Access Database\0"
    "Description=MS Access Database\0"
    );
if( ! ret )
{
    AfxMessageBox( _T("The 'Data Source Name' failed to install\nPlease call Tech Support\n800-123-4567") );
    return FALSE;
}

另一方面,(我没有尝试过),你应该可以使用DSN-less connection 字符串。但这意味着你不能DSN=orcl;,因为没有这样的 DSN。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多