SQLserver2005 соединение с VC ++ (код) - PullRequest
0 голосов
/ 09 декабря 2011

Я разработал простое приложение в Visual studio 2008. Это комбинация C и C ++. Сейчас я пытаюсь подключиться к SQLserver2005.Установлен SQlserver2005 для управления Express studio. Создана база данных и таблица. Чтобы узнать о связности, взял пример для вставки данных из кода С. Но он ничего не показывает. Я знаю, что это очень просто. Но кое-где я делаю не так. Я хотел бы уточнить несколько вещей о приведенном ниже коде. Хочу сделать подключение локально, а не серверной частью с помощью SQLserver2005.

  1. В строке подключения, какие имя пользователя и пароль я должен упомянуть.
  2. что на самом деле делает эта строка. "Hr = pConn-> Open (strCon," keerth "," keerth ", 0);"
  3. обычно в MYSQL мы создаем DNS.но как упомянуть DNS в SQL server2005.
  4. Если я хочу вставить значение переменной (которое будет отображаться в окне консоли) в базу данных. Пожалуйста, дайте мне знать, возможно ли это? если это так, предложите мне любую идею для ее реализации.

Есть ли учебные ссылки, чтобы узнать об этих вещах.

 #include "stdafx.h"

 #import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
 no_namespace rename("EOF", "EndOfFile")

 int main(int argc, char* argv[])
 {

     /*The following variables will be initialized with necessary values and  appended to the strSQL values*/
     _bstr_t strName;
     _bstr_t strAge;
     _bstr_t strDOB;
     _bstr_t strSalary;

       _ConnectionPtr pConn = NULL;
     // Define string variables for ADO connection
     _bstr_t strCon("Provider=SQLOLEDB.1;Persist Security Info=False;Username=keerth;Password=keerth;Initial Catalog=keerth516;Data Source=(local);Integrated Security=SSPI;");

     HRESULT hr = S_OK;

     //Initialize the COM Library
     CoInitialize(NULL);

     try
     {
         //Create the Connection pointer
         hr = pConn.CreateInstance((__uuidof(Connection)));
         if(FAILED(hr))
         {
             printf("Error instantiating Connection object\n");
             goto cleanup;
         }

         //Open the SQL Server connection
         hr = pConn->Open(strCon,"keerth","keerth",0);
         if(FAILED(hr))
         {
              printf("Error Opening Database object using ADO _ConnectionPtr \n");
              goto cleanup;
         }

         /*Initialize the values */
        strName = "'C++ ADO insert Sample',";
        strAge = "23,";
        strDOB = "'13/04/1988',";
        strSalary = "16600.10)";

        /* Append the values to the Insert Statement */
       _bstr_t strSQL("Insert into Table1(NAME,AGE,DOB,SALARY) Values(");

        strSQL += strName + strAge + strDOB + strSalary ;

        printf("%s\n",(LPCSTR)strSQL);

        //Execute the insert statement
       pConn->Execute(strSQL,NULL,adExecuteNoRecords);

       printf("Data Added Successfully\n",(LPCSTR)strSQL);

      //Close the database
      pConn->Close();

     }
     catch(_com_error &ce)
     {
        //printf("Error:%s\n",ce.ErrorInfo);
         printf("Error:%s\n,",(char*)ce.Description());
     }


 cleanup:
     CoUninitialize();

     return 0;
 }

1 Ответ

1 голос
/ 09 декабря 2011

Возможно, вы захотите взглянуть на API ADO на http://msdn.microsoft.com/en-us/library/windows/desktop/ms678086(v=vs.85).aspx.

Не думаю, что имеет смысл указывать имя пользователя / пароль в качестве параметров для Open и в качестве параметров в строке подключения. Настройка «Integrated Security = SSPI» активирует интегрированный вход в Windows, так что это даже делает ваше имя пользователя / пароль более избыточным. Строка соединения описана в MSDN (ссылка выше), части строки соединения, которые относятся к поставщикам БД, описаны здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681020(v=vs.85).aspx.

"pConn-> Открыть (strCon," keerth " "keerth", 0);" открывает соединение с сервером базы данных.

3. Обычно в MYSQL мы создадим DNS.но как упомянуть DNS в SQL server2005.

Что вы имеете в виду под этим?

4.Если я хочу вставить значение переменной (которое будет отображаться в окне консоли) в базу данных. Пожалуйста, дайте мне знать, возможно ли это? если это так, предложите мне любую идею для ее реализации.

Вы можете использовать ADO RecordSet с AddNew или функцию Execute в вашем примере. Используя Execute, вы можете добавить adCmdText к последнему параметру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...