1
我一直在嘗試使用odbc插入記錄到sql server數據庫,但有一些問題。下面的程序是在Visual Studio上使用控制檯C++的代碼。無法插入數據到SQL Server數據庫ODBC C++
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <sqltypes.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
RETCODE rc;
HENV henv;
HDBC hdbc;
HSTMT hstmt;
SDWORD cdData;
cout << "Attempting Connection " << endl;
SQLAllocEnv(&henv);
SQLAllocConnect(henv, &hdbc);
rc = SQLConnect(hdbc, L"DatasourceTest", SQL_NTS, 0, SQL_NTS, 0, SQL_NTS);
if ((rc != SQL_SUCCESS) && (rc != SQL_SUCCESS_WITH_INFO))
{
cout << "Cannot open database -- make sure ODBC is confugured properly." << endl;
SQLFreeConnect(hdbc);
SQLFreeEnv(henv);
cout << "Press ENTER to continue." << endl;
cin.get();
return 1;
}
else
{
cout << "Connected -- ODBC is confugured properly." << endl;
}
//Create a SQL statement
UCHAR szSqlStr[] = "INSERT INTO PERSONS (FirstName, LastName) VALUES ('Jack', 'Benson')";
cout << "Executing " << szSqlStr << endl;
rc = SQLAllocStmt(hdbc, &hstmt);
rc = SQLPrepare(hstmt, (SQLWCHAR*)szSqlStr, sizeof(szSqlStr));
rc = SQLExecute(hstmt);
cout << "rc" << rc << endl;
cout << "SQL_SUCCESS" << SQL_SUCCESS << endl;
cout << "SQL_SUCCESS_WITH_INFO" << SQL_SUCCESS_WITH_INFO << endl;
if ((rc != SQL_SUCCESS) && (rc != SQL_SUCCESS_WITH_INFO))
{
//ERROR
SQLWCHAR sqlState[8];
SQLWCHAR msgText[1024];
SQLINTEGER NativeErrorPtr;
SQLSMALLINT TextLengthPtr;
SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, sqlState, &NativeErrorPtr, msgText, sizeof(msgText), &TextLengthPtr);
SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
SQLFreeEnv(henv);
cout << "Error " << endl << msgText << endl;
cout << "Press ENTER to continue." << endl;
}
cin.get();
return 0;
}
我已經在這個線程附加程序的輸出。返回的RETCODE爲-1,在屏幕截圖中顯示此錯誤。我無法將任何記錄插入到數據庫中。與數據庫的連接沒問題。每次程序執行時,錯誤代碼都是不同的。
我會嘗試'SQLExecDirect'來代替。 (因爲聲明沒有參數。) – jarlh
我已經嘗試使用SQLExecDirect,但事實證明具有相同的錯誤。 –