Простое создание таблицы в SQL Server с переполнением стека

Я пытаюсь создать таблицу в SQL Server со следующим кодом:

#include <iostream>
#include <windows.h>
#include <string>
#include <sql.h>
#include <sqltypes.h>
#include <sqlext.h>
using namespace std;

void main()
{
SQLHANDLE sqlevent, sqlconnection, sqlstatement;

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlevent);

SQLSetEnvAttr(sqlevent, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);

SQLAllocHandle(SQL_HANDLE_DBC, sqlevent, &sqlconnection);

SQLCHAR retstring[10000];
SQLDriverConnect(sqlconnection, NULL, (SQLCHAR*)("DRIVER={SQL Server Native Client 10.0};SERVER=SERVER;DATABASE=DATABASE;UID=CrystalReports;PWD=PASSWORD"), SQL_NTS, retstring, 10000, NULL, SQL_DRIVER_NOPROMPT);

SQLAllocHandle(SQL_HANDLE_STMT, sqlconnection, &sqlstatement);

string commandline;

commandline = "CREATE TABLE NEW_TABLE01(Name VARCHAR(10), Age INT, Salary DOUBLE PRECISSION)";

if(SQL_SUCCESS != SQLExecDirect(sqlstatement, (SQLCHAR*)(commandline.c_str()), SQL_NTS))    // SQLExecDirect always failed to excute
{
cout<<"The create table sql command hasn't been excuted successfully."<<endl;
return;
}
return;
}

Тем не менее, код if(SQL_SUCCESS != SQLExecDirect(sqlstatement, (SQLCHAR*)(commandline.c_str()), SQL_NTS)) всегда возвращать TRUE, что означает, что команда SQL не была успешно выполнена.

У меня есть все права на создание таблицы, и я вручную проверяю команду SQL на сервере SQL, и она работает.

Могу ли я знать, что я не прав? И как я могу достичь своей цели?

Спасибо заранее.

0

Решение

Я думаю, что получил ответ, так как вдохновлен Программа C ++ SQL Database

Я понял, что есть разные схемы в SQL Server, поэтому я использую CREATE TABLE [ROU].[NEW_TABLE01] вместо. Теперь мой код работает хорошо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector