2

我想从我的控制台 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 和密码 Password 的新 Windows 用户帐户
  • 尝试连接时,将数据库名称命名为“Test”是否足够,或者将其设置为 Test.db 或类似名称。对于用户名,我是否必须写 Computername\Username 才能连接或只是“用户名”
  • 在安装 SQLserver 时,我已经为“自动启动”框打了票,在任务管理器中,我看到一些 sql 东西正在运行。那是服务器,还是我必须在尝试连接之前手动启动它?
  • 我必须以创建数据库的帐户的用户身份登录,还是知道用户名和密码就足够了?
  • 身份验证方法是“Windows 身份验证”

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

4

4 回答 4

1

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

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

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

或者可能

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

您需要知道的都在这里,您只需仔细阅读即可。

于 2011-08-12T22:00:41.037 回答
1

连接SQL时,数据库名就够了。您需要知道的是服务器、SQL 实例名称和数据库。在默认安装中,使用默认实例,这意味着您无需指定实例名称。通常您会看到该服务安装为 SQL Server (MSSQLSERVER)。

您不需要使用用于创建数据库的帐户的用户名,但任何其他用户都必须拥有该权限。至少出于测试目的,使用您安装/创建的名称应该为您提供访问数据库的适当权限。

如果您不知道要使用哪个用户,或者有哪些权限,则需要与 Management Studio 联系。这是 SQL Server Management Studio 2008 Express 的链接,如果您尚未安装它:

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

这将让您登录、查看数据库并检查已实施的安全措施。

于 2011-03-09T17:54:50.980 回答
0
con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

在“@”之后放置数据库的名称。

于 2013-06-04T16:02:04.370 回答
0

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

于 2013-07-26T02:49:34.933 回答