首页 > 解决方案 > 项目之间的 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

标签: c++sqlvisual-studiotypes

解决方案


通过@RichardCritten,转到项目Properties> Configuration Properties> Advanced> Character Set>Not Set


推荐阅读