2011-03-09 88 views
2

我想從我的控制檯C++應用程序連接到SQLServer數據庫。 我已經使用Microsoft SQL Server來創建一個名爲「Test」的數據庫。我也從sqlapi.com「安裝」了sqlapi。 對於初學者,我只是想使用與sqlapi一起發貨的修改示例代碼連接到該數據庫。使用SQLAPI從C++控制檯應用程序連接到SQLServer數據庫

#include <stdio.h> // for printf 
#include <SQLAPI.h> // main SQLAPI++ header 

int main(int argc, char* argv[]) 
{ 
    SAConnection con; // create connection object 
    printf("Howdy!\n"); 
    try 
    { 
     con.Connect("Test","COMPNAME\Username","Pwd", SA_SQLServer_Client); // database name// user name //password 

     printf("We are connected!\n"); 

     // Disconnect is optional 
     // autodisconnect will ocur in destructor if needed 
     con.Disconnect(); 

     printf("We are disconnected!\n"); 
    } 
    catch(SAException &x) 
    { 
     // SAConnection::Rollback() 
     // can also throw an exception 
     // (if a network error for example), 
     // we will be ready 
     try 
     { 
      // on error rollback changes 
      con.Rollback(); 
     } 
     catch(SAException &) 
     { 
     } 
     // print error message 
     printf("%s\n", (const char*)x.ErrText()); 
    } 

    return 0; 
} 

它編譯好,沒有錯誤,但它無法連接。我比C++中的基礎知識略懂,但我從昨天開始就開始使用SQL。所以我對連接的一些問題:

  • 在安裝的SQL Server 2008 Express的我創建了一個叫做用戶名與密碼,密碼一個新的Windows用戶帳戶
  • 當試圖連接,是它足以讓數據庫名稱「測試」或者它是Test.db或類似的。對於用戶名,我必須寫Computername \用戶名連接或只是「用戶名」
  • 我安裝SQLserver時票「開始自動」框,並在taskamanager我看到一些SQL的東西運行。那是服務器,還是我必須在嘗試連接之前手動啓動它?
  • 我是否必須以帳戶創建數據庫的用戶身份登錄,還是知道用戶名和密碼就足夠了?
  • 驗證方法爲「Windows身份驗證」

我想你可能會明白的地方麻煩的是,它這些著名的第一個步驟......(好吧,我花了很長一段時間之前,我想通了如何在VS中建立一個項目... ;-)) 如果你有一些答案或提示我在哪裏可以找到它們(一本不錯的書或鏈接),我會非常感激。

+1

嘗試使用「COMPNAME \\用戶名」,而不是「COMPNAME \ Username」 – Erik 2011-03-09 17:47:12

+0

我從來沒有聽說過sqlapi.com,但是如果他們的代碼需要連接Windows用戶名*和*密碼,它肯定是壞的。爲什麼不使用經過測試和證明的用於SQL Server的C++ API,如ODBC,OLEDb或ADO? – 2011-03-09 17:52:45

回答

1

連接到SQL時,數據庫名稱就足夠了。你需要知道的是服務器,SQL實例名稱和數據庫。在默認安裝中,使用默認實例,這意味着您不需要指定實例名稱。通常你會看到該服務被安裝爲SQL Server(MSSQLSERVER)。

您不需要使用用於創建數據庫的帳戶的用戶名,但其他用戶必須擁有該權限。至少爲了測試目的,使用您安裝/創建的名稱應該給予您訪問數據庫的適當權限。

如果您不知道要使用哪個用戶或哪些權限就位,則需要使用Management Studio進行檢查。這是鏈接SQL Server Management Studio中2008 EXPRES如果你沒有它已經安裝:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b

,讓你登錄,查看數據庫,檢查什麼安全到位。

+0

嗨,我已經安裝了管理工作室,謝謝..根據屬性的服務器名稱是:服務器:ELVIS \ SQLEXPRESS所有者:ELVIS \ Pete dbname:測試你是什麼意思的「實例」?/Lumpi – Lumpi 2011-03-09 18:00:07

+0

一個實例允許在一臺服務器上安裝多個版本的SQL Server。在安裝的情況下,您應該嘗試連接到名爲'ELVIS \ SQLEXPRESS'的服務器,而不是'ELVIS'。 – Thyamine 2011-03-09 18:14:56

2

如果您使用的是Windows身份驗證,則不需要傳遞用戶名和密碼。您需要正確設置數據庫以允許任何人「選擇」權限。我相信SQL Server中的通用用戶名爲「guest」,並且可能默認配置爲允許這樣做。

真正發出你有,我認爲,這是你需要通過服務器和數據庫的名稱在一起,就像:

con.Connect("[email protected]","","", SA_SQLServer_Client); 

或可能

con.Connect("ELVIS\[email protected]","","", SA_SQLServer_Client); 

所有您需要知道是here,你只是仔細閱讀。

相關問題