SQL Server — соединение SQL из проекта Visual C ++ Windows Form

Я очень новичок в C ++. только что создал C ++ Windows Forms проект с использованием Visual Studio Community 2015. И использовал следующую основную функцию для получения соединения SQL.

#include "stdafx.h"#include <iostream>
#include <windows.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <sql.h>

using namespace std;

int main()
{

#define SQL_RESULT_LEN 240
#define SQL_RETURN_CODE_LEN 1000
//define handles and variables
SQLHANDLE sqlConnHandle;
SQLHANDLE sqlStmtHandle;
SQLHANDLE sqlEnvHandle;
SQLWCHAR retconstring[SQL_RETURN_CODE_LEN];
//initializations
sqlConnHandle = NULL;
sqlStmtHandle = NULL;
//allocations
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlEnvHandle))
goto COMPLETED;
if (SQL_SUCCESS != SQLSetEnvAttr(sqlEnvHandle, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0))
goto COMPLETED;
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_DBC, sqlEnvHandle, &sqlConnHandle))
goto COMPLETED;
//output
cout << "Attempting connection to SQL Server...";
cout << "\n";
//connect to SQL Server

switch (SQLDriverConnect(sqlConnHandle,
NULL,
(SQLWCHAR*)L"Server=P2005\SQLEXPRESS2014;Database=CPPDB;User Id=myuid;Password=mypswd;",

SQL_NTS,
retconstring,
1024,
NULL,
SQL_DRIVER_NOPROMPT)) {
case SQL_SUCCESS:
cout << "Successfully connected to SQL Server";
cout << "\n";
break;
case SQL_SUCCESS_WITH_INFO:
cout << "Successfully connected to SQL Server";
cout << "\n";
break;
case SQL_INVALID_HANDLE:
cout << "Could not connect to SQL Server";
cout << "\n";
goto COMPLETED;
case SQL_ERROR:
cout << "Could not connect to SQL Server";
cout << "\n";
goto COMPLETED;
default:
break;
}
//if there is a problem connecting then exit application
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_STMT, sqlConnHandle, &sqlStmtHandle))
goto COMPLETED;
//output
cout << "\n";
cout << "Executing T-SQL query...";
cout << "\n";
//if there is a problem executing the query then exit application
//else display query result
if (SQL_SUCCESS != SQLExecDirect(sqlStmtHandle, (SQLWCHAR*)L"SELECT @@VERSION", SQL_NTS)) {
cout << "Error querying SQL Server";
cout << "\n";
goto COMPLETED;
}
else {
//declare output variable and pointer
SQLCHAR sqlVersion[SQL_RESULT_LEN];
SQLINTEGER ptrSqlVersion;
while (SQLFetch(sqlStmtHandle) == SQL_SUCCESS) {
SQLGetData(sqlStmtHandle, 1, SQL_CHAR, sqlVersion, SQL_RESULT_LEN, &ptrSqlVersion);
//display query result
cout << "\nQuery Result:\n\n";
cout << sqlVersion << endl;
}
}
//close connection and free resources
COMPLETED:
SQLFreeHandle(SQL_HANDLE_STMT, sqlStmtHandle);
SQLDisconnect(sqlConnHandle);
SQLFreeHandle(SQL_HANDLE_DBC, sqlConnHandle);
SQLFreeHandle(SQL_HANDLE_ENV, sqlEnvHandle);
//pause the console window - exit when key is pressed
cout << "\nPress any key to exit...";
getchar();
return 0;
}

Когда я собираю и запускаю приведенный выше код, он всегда выдает «Не удалось подключиться к SQL Server».
Строка подключения SQL приведена ниже как,

"Server=P2005\SQLEXPRESS2014;Database=CPPDB;User Id=myuid;Password=mypswd;"

Я получил вышеуказанный формат строки подключения от этот ссылка на сайт.
И я использую Microsoft SQL Server 2014 через SQL Management Studio.

Примечание. Он всегда запускает регистр SQL_ERROR при переключении.
Я пытаюсь отследить ошибку. Но мне не повезло.

Почему это происходит?

Любая помощь будет оценена.
Благодарю.

3

Решение

Это предложение.

Попробуйте Visual C ++ MFC Template.

Включить ниже.

//For CDatabase class
#include "odbcinst.h"#include "afxdb.h"//

Делайте вещи ниже, где хотите.

    CDatabase database;
CString SqlString;
CString strID, strName, strAge;
CString sDriver = L"ODBC Driver 11 for SQL Server";
CString sDsn;
int iRec = 0;

// Build ODBC connection string
sDsn.Format(L"ODBC;DRIVER={%s};DSN='';DBQ=%s;DATABASE=MYDBNAME", sDriver, NULL);
TRY{
// Open the database
database.Open(NULL,false,false,sDsn);

SqlString = "INSERT INTO MY_TABLE (id,name,age) VALUES (1,'Sanjaya',25)";
database.ExecuteSQL(SqlString);
// Close the database
database.Close();
}CATCH(CDBException, e) {
// If a database exception occured, show error msg
AfxMessageBox(L"Database error: " + e->m_strError);
}
END_CATCH;

Вы должны создать источник данных ODBC, и он должен быть указан как «Драйвер ODBC 11 для SQL Server».
Я использую VS Community 2015 и SQL Server 2014.

1

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

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

По вопросам рекламы [email protected]