SQL Server 2005与VC ++的连接(代码)

时间:2011-12-09 10:22:37

标签: c sql-server-2005 visual-c++

我在Visual Studio 2008中开发了一个简单的应用程序。它是C和C ++的组合。现在我正在尝试连接到SQLserver2005。安装了SQlserver2005 managementExpress工作室。 创建了数据库和表。要知道连接性采取了一个例子来插入来自C代码的数据。但它没有显示任何东西。我知道它非常简单。但是有些地方做错了。 我想澄清下面代码的一些事情。想要使用SQLserver2005在本地连接而不是服务器部分。

  1. 在连接字符串中我应该提到的用户名和密码。
  2. 这条线真正做了什么。“hr = pConn-> Open(strCon,”keerth“,”keerth“,0);”
  3. 通常在MYSQL中我们将创建DNS。但是如何在SQL server2005中提及DNS。
  4. 如果我想将变量值(将在控制台窗口中显示)插入到database.Kindly让我知道是否可能?如果有的话建议我实施它。
  5. 是否有任何教程链接可以了解这些事情。

     #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 个答案:

答案 0 :(得分:1)

您可能希望在http://msdn.microsoft.com/en-us/library/windows/desktop/ms678086(v=vs.85).aspx处查看ADO API。

我认为在连接字符串中将作为参数提供用户名/密码作为参数是不合理的。设置“Integrated Security = SSPI”会激活集成的Windows登录,这样甚至会使您的用户名/密码更加冗余。 connectionString记录在MSDN(上面的链接)中,这里记录了特定于数据库提供程序的连接字符串部分:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681020(v=vs.85).aspx

“pConn->打开(STRCON” keerth “ ”keerth“,0);”打开与数据库服务器的连接。

  

3.通常在MYSQL中我们将创建DNS。但是如何在SQL server2005中提及DNS。

这是什么意思?

  

4.如果我想将变量值(将在控制台窗口中显示)插入到database.Kindly让我知道是否可能?如果是这样,建议我实施它。

您可以将ADO RecordSet与AddNew或示例中的Execute函数一起使用。使用Execute,您可以将adCmdText添加到最后一个参数。