我正在尝试使用以下代码在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 Database program 的启发以来,我想我已经有了答案
我意识到SQL Server中存在不同的架构,因此我改用CREATE TABLE [ROU].[NEW_TABLE01]
。现在我的代码运行良好。
关于c++ - 使用C++在SQL Server中执行创建表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18331776/