2011-03-09 82 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,你只是仔细阅读。

相关问题