c++ - 将 ADO 转换为 ODBC,以便解决方案独立于平台
问题描述
最初的 BJTIMES 项目使用内置的 Windows ADO 框架来连接数据库。这将解决方案限制为仅在 Windows 上运行。我正在修改解决方案以使用 ODBC,以便使用 Windows/Linux ODBC 驱动程序,我们可以在 Windows 和 Linux 上运行该解决方案
我试图将 ADO 转换为 ODBC,但是当我运行解决方案时,它说连接失败。这意味着它没有连接到数据库。但它在 ADO 版本中运行良好
try
{ //following ODBC functions to establish connection
if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &SqlEnvHandle ))
if (SQL_SUCCESS == SQLSetEnvAttr(getEnvironment(), SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0))
if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, getEnvironment(), &SqlConnectionHandle ))
{
SQLCHAR retconstring[RETURN_CODE_SZ];
SQLRETURN retcode = SQLDriverConnect( //establishing the connection to DB
getConnection(),
NULL,
connect,
SQL_NTS,
retconstring,
1024,
NULL,
SQL_DRIVER_NOPROMPT);
if ((retcode == SQL_SUCCESS) || (retcode == SQL_SUCCESS_WITH_INFO))
{
isConnected = true;
sprintf(m_ErrStr, "Success");
IsConnected = true;
return IsConnected;
}
else
{
sprintf(m_ErrStr, "Failed to connect");
return false;
}
}
}
CATCHERROR(SqlConnectionHandle,0);
return false;
}
这是连接数据库的代码部分。
在上面的代码中有使用 ADO 而不是 ODBC 的变量。看起来 SQLdriverconnect 有一些问题。我怎样才能找出问题所在?
解决方案
推荐阅读
- arrays - 如何在json数组结构中添加附加字段
- python - 如何更改 IMEI 号码列表的格式以包含空格?
- r - 使用 gsub 替换 R 中的模式
- bash - 如何使用 grep 在 shell 脚本中查找位于行尾的字符串
- c# - 如何在 C# 中停止相机?使用grabber.dispose时出错
- foreign-keys - 在 Odoo 10 中将电子邮件设置为外键
- amazon-web-services - 从 S3 存储桶中删除文件的困难。如何使用日志?
- java - Eclipse git UI 抛出错误
- reactjs - generateAppendClassName:CSS 模块未定义
- c++ - C++:类指针迭代器指向的类中struct的迭代器不可解引用