c++ - 项目之间的 SQLCHAR(或 SQL 函数)不一致
问题描述
我正在将 Visual Studio 用于一个项目,在一个特定的项目中,我需要使用一些 sql 函数,由于某种原因,它适用于 typeSQLCHAR*
而不是SQLWCHAR*
. 然后我复制了这个项目,因为它有一些 GUI 设置和窗口处理,但我遇到了仅与此相关的错误。基本上,每个错误都告诉我该函数无法将 a 转换SQLCHAR*
为SQLWCHAR*
,所以我想函数签名会有所不同。这对我来说似乎很奇怪,因为它是完全相同的源代码,没有任何改变,相同的构建(x86)。
#include <Windows.h>
#include <sqlext.h>
int main()
{
const char* m_Path = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=Database.accdb;";
HENV m_Environment = nullptr;
HDBC m_Connection = nullptr;
HSTMT m_QueryStatement = nullptr;
RETCODE m_ReturnStatus = 0;
m_ReturnStatus = SQLAllocEnv(&m_Environment);
m_ReturnStatus = SQLAllocConnect(m_Environment, &m_Connection);
m_ReturnStatus = SQLDriverConnect(m_Connection, nullptr, m_Path, SQL_NTS, nullptr, 0, nullptr, SQL_DRIVER_NOPROMPT);
SQLDisconnect(m_Connection);
SQLFreeHandle(SQL_HANDLE_DBC, m_Connection);
SQLFreeHandle(SQL_HANDLE_ENV, m_Environment);
return 0;
}
错误:
E0167 argument of type "const char *" is incompatible with parameter of type "SQLWCHAR *" test
C2664 'SQLRETURN SQLDriverConnectW(SQLHDBC,SQLHWND,SQLWCHAR *,SQLSMALLINT,SQLWCHAR *,SQLSMALLINT,SQLSMALLINT *,SQLUSMALLINT)': cannot convert argument 3 from 'const char *' to 'SQLWCHAR *' test
编辑:使用 Visual Studio 的ctrl + click
,在它使用的项目上,当我单击特定功能时它会打开sqlext.h
,但在项目上它不起作用,当我ctrl + click
在同一个功能上时,它会由于某种原因打开sqlucode.h
。
解决方案
通过@RichardCritten,转到项目Properties
> Configuration Properties
> Advanced
> Character Set
>Not Set
推荐阅读
- spring-boot - 具有基本身份验证、cors 和会话的 Kubernetes minikube nginx 入口返回 403
- angular - 使用 NGRX 注册效果
- javascript - Vue.js:如何在方法中使用来自另一个组件的变量
- android - 单元测试协程 runBlockingTest:此作业尚未完成
- python - 从浮点数到整数的 Python 有损转换
- angular - 是否可以在 p 日历中选择秒?
- batch-file - 用于提供有条件的不同响应的批处理文件命令
- mysql - SQLSTATE [HY000]:一般错误:1 无法创建/写入文件'/var/www/html/new_7alaqa/public/dumpfiles/15869372079790_1036teachernote.txt'
- python - 绘制机器学习的校准曲线
- javascript - 带有通知器的 RxJS `repeatWhen` 快速重复