C++中的数据库访问连接 我试图用C++ 5编译器连接C++中的Access数据库。我从internet上找到以下代码,但它给了我一个错误:

C++中的数据库访问连接 我试图用C++ 5编译器连接C++中的Access数据库。我从internet上找到以下代码,但它给了我一个错误:,c++,C++,[错误]C:\Users\rubeea\Documents\C-Free\Temp\db.cpp:25:错误:从const char*“tounsigned char*”转换无效 代码如下: #include<windows.h> #include<sqlext.h> #include<stdio.h> #include <sql.h> int main(void){ char szDSN[256] = "Driver=std;DSN='';D

[错误]C:\Users\rubeea\Documents\C-Free\Temp\db.cpp:25:错误:从const char*“tounsigned char*”转换无效

代码如下:

#include<windows.h>
#include<sqlext.h>
#include<stdio.h>
#include <sql.h>

int main(void){

char szDSN[256] = "Driver=std;DSN='';DBQ=E:\\student.mdb;";

/* Data Access Method used in this sample */
const char* DAM = "Direct ODBC";

HENV    hEnv;
HDBC    hDbc;


/* ODBC API return status */
RETCODE rc;    

int     iConnStrLength2Ptr;
char    szConnStrOut[256];


unsigned char* query ="SELECT faculty.[name], faculty.[remarks] FROM faculty;";

SQLCHAR         chval1[128], chval2[128], colName[128];
int             ret1;
int             ret2;

/* Number of rows and columns in result set */
SQLINTEGER      rowCount = 0;
SQLSMALLINT     fieldCount = 0, currentField = 0;
HSTMT           hStmt;

/* Allocate an environment handle */
rc = SQLAllocEnv(&hEnv);
/* Allocate a connection handle */
rc = SQLAllocConnect(hEnv, &hDbc);

/* Connect to the 'student.accdb' database */
rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, 
    SQL_NTS, (unsigned char*)szConnStrOut, 
    255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(rc)) 
{
    printf("%s: Successfully connected to database. Data source name: \n  %s\n", 
       DAM, szConnStrOut);

    /* Prepare SQL query */
    printf("%s: SQL query:\n  %s\n", DAM, query);

    rc = SQLAllocStmt(hDbc,&hStmt);    rc = SQLPrepare(hStmt, query, SQL_NTS);

    /* Bind result set columns to the local buffers */ 
    rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, chval1, 128, (SQLINTEGER*)&ret1);
    rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, chval2, 128, (SQLINTEGER*)&ret2);

    /* Execute the query and create a record set */
    rc = SQLExecute(hStmt); 
    if (SQL_SUCCEEDED(rc)) 
    {
        printf("%s: Retrieve schema info for the given result set:\n", DAM);
        SQLNumResultCols(hStmt, &fieldCount);
        if (fieldCount > 0)
        {
            for (currentField=1; currentField <= fieldCount; currentField++)
            {
                SQLDescribeCol(hStmt, currentField,
                    colName, sizeof(colName), 0, 0, 0, 0, 0);
                printf(" | %s", colName);    
            }
            printf("\n");
        }
        else
        {
            printf("%s: Error: Number of fields in the result set is 0.\n", DAM);
        }

        printf("%s: Fetch the actual data:\n", DAM);
        /* Loop through the rows in the result set */
        rc = SQLFetch(hStmt);
        while (SQL_SUCCEEDED(rc)) 
        {
            printf(" | %s | %s\n", chval1, chval2);
            rc = SQLFetch(hStmt);
            rowCount++;
        };

        printf("%s: Total Row Count: %d\n", DAM, rowCount);
        rc = SQLFreeStmt(hStmt, SQL_DROP);
    }
}
else
{`enter code here`
    printf("%s: Couldn't connect to %s.\n", DAM, szDSN);
}

/* Disconnect and free up allocated handles */
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);


printf("%s: Cleanup. Done.\n", DAM);

return 0;
}
尝试不使用unsigned…为什么使用unsigned char*?错误消息非常清楚,它应该是const char*query