Создание базы данных через ODBC
Как создать новую базу данных с помощью API MFC ODBC?
В строке подключения следует указать имя базы данных, к которой вы хотите подключиться. Что делать, если я только что установил SQL Server, не содержащий пользовательских баз данных?
Какое имя базы данных вы указываете в строке подключения?
Например, для SQL Server:
CDatabase db;
db.OpenEx(L"Driver={ODBC Driver 11 for SQL Server};Server=myServerAddress;"
L"Database=????????;Uid=myUsername;Pwd=myPassword", CDatabase::noOdbcDialog);
db.ExecuteSQL(L"CREATE DATABASE testdb");
Должен ли я использовать системные базы данных (например, master, model и т. д.)? Есть ли какой-то более общий подход?
1 ответ:
Можно опустить
Database=
в строке соединения. Затем вы создаете новую базу данных и после этого переключаетесь на эту базу данных с помощьюUSE
.Что-то вроде этого прекрасно работает для меня:
SQLWCHAR strConnect[256] = L"Driver={SQL Server};Server=.\\MACHINE;Trusted_Connection=yes;"; SQLWCHAR strConnectOut[1024] = { 0 }; SQLSMALLINT nNumOut = 0; SQLRETURN nResult = SQLDriverConnect(handleDBC, NULL, (SQLWCHAR*)strConnect, SQL_NTS, (SQLWCHAR*)strConnectOut, sizeof(strConnectOut), &nNumOut, SQL_DRIVER_NOPROMPT); if (!SQL_SUCCEEDED(nResult)) // some error handling SQLHSTMT handleStatement = SQL_NULL_HSTMT; nResult = SQLAllocHandle(SQL_HANDLE_STMT, handleDBC, (SQLHANDLE*)&handleStatement); if (!SQL_SUCCEEDED(nResult)) // some error handling // Create a new database and use that nResult = SQLExecDirect(handleStatement, L"CREATE DATABASE Foobar", SQL_NTS); nResult = SQLExecDirect(handleStatement, L"USE Foobar", SQL_NTS); // create table Wallet in database Foobar nResult = SQLExecDirect(handleStatement, L"CREATE TABLE Wallet (WalletID int NOT NULL, Name nvarchar(5) NOT NULL)", SQL_NTS);