使用C++在SQL Server中执行创建表

Excute create table in SQL Server with C++

本文关键字:执行 创建 Server C++ SQL 使用      更新时间:2023-10-16

我正试图用以下代码在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 server中的SQL命令,它可以工作。

我能知道我做错了什么吗?我该如何实现我的目标?

非常感谢。

受C++SQL数据库程序的启发,我想我已经得到了答案

我意识到SQL Server中有不同的模式,因此我使用CREATE TABLE [ROU].[NEW_TABLE01]。现在我的代码运行良好。