使用SQLAPI从C ++控制台应用程序连接到SQLServer数据库

时间:2011-03-09 17:40:37

标签: c++ sql sql-server api sqlapi++

我想从我的控制台c ++应用程序连接到SQLServer数据库。 我使用Microsoft SQL Server创建了一个名为“Test”的数据库。我也从sqlapi.com“安装”了sqlapi。 对于初学者,我只想使用随sqlapi一起提供的修改后的示例代码连接到该数据库。

#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期间,我创建了一个名为Username with password password
  • 的新Windows用户帐户
  • 尝试连接时,是否足以将数据库名称设为“Test”或将其设置为Test.db或类似名称。对于用户名,我是否必须编写Computername \ Username才能连接或只需“Username”
  • 我在安装SQLserver时打了一个“Start automatic”框,在taskamanager中我看到一些sql正在运行。那是服务器,还是我必须在尝试连接之前手动启动它?
  • 我是否必须以我创建数据库的帐户用户身份登录,或者是否足以知道用户名和密码?
  • 身份验证方法是“Windows身份验证”

我想你可能会明白麻烦在哪里,这些着名的第一步......(好吧我花了很长时间才弄清楚如何在VS中建立一个项目...... ;-)) 如果你有一些答案,或者我可以找到它们的提示(一本好书或链接),我将非常感激。

4 个答案:

答案 0 :(得分: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

这将允许您登录,查看数据库,并检查安全性。

答案 1 :(得分:1)

如果您使用的是Windows身份验证,则无需传递用户名和密码。您需要正确设置数据库以允许任何人“选择”权限。我相信SQL Server中的通用用户称为“guest”,并且可能默认配置为允许该用户。

我相信你遇到的真正问题是你需要将服务器名称和数据库名称一起传递,例如:

con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

或可能

con.Connect("ELVIS\SQLEXPRESS@Test","","", SA_SQLServer_Client);

您需要知道的只是here,您只需仔细阅读即可。

答案 2 :(得分:0)

con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

在“@”之后输入数据库的名称。

答案 3 :(得分:0)

SQLAPI.h用于连接到mysql数据库,正如您提到的,您尝试连接到sqlserver时需要使用ss6API.h而不是http://sqlapi.com/ServerSpecific/SQLServer_DbLibrary.html#Getting%20native%20SQL%20Server%20API * *

相关问题