Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Firebird数据库连接凭据_C_Xcode_Firebird_Firebird2.5 - Fatal编程技术网

C Firebird数据库连接凭据

C Firebird数据库连接凭据,c,xcode,firebird,firebird2.5,C,Xcode,Firebird,Firebird2.5,在Firebird的每个c接口代码程序中,我都会传递用户凭据以连接到数据库。如果我不传递这些凭据并直接调用isc\u attach\u database()连接到数据库,则抛出错误:未定义您的用户名和密码。请您的数据库管理员设置Firebird登录。 有没有办法跳过这些或将这些设置为默认设置。我的意思是我想连接到每个程序的数据库,而不需要传递uname和密码 下面是我用来连接数据库的示例代码 int main() { isc_db_handle db1 = NULL; // Databa

在Firebird的每个c接口代码程序中,我都会传递用户凭据以连接到数据库。如果我不传递这些凭据并直接调用
isc\u attach\u database()
连接到数据库,则抛出错误:未定义您的用户名和密码。请您的数据库管理员设置Firebird登录。

有没有办法跳过这些或将这些设置为默认设置。我的意思是我想连接到每个程序的数据库,而不需要传递
uname
密码

下面是我用来连接数据库的示例代码

int main()
{
    isc_db_handle db1 = NULL; // Database handle.
    isc_tr_handle   trans = NULL;//transaction handle
    // Allocate some pointers to a dpb (database parameter buffer).
    // You use the dpb to talk with the database.
    char dpb_buffer[256], *dpb, *p;

    short dpb_length;
    char *uname; // user-name.
    char *upass; // password.
    ISC_STATUS status_vector[20]; // Status vector, to monitor connection.

    char *str = "/Users/Sumanth/Desktop/NewDB2.fdb";
    uname = "SYSDBA";
    upass = "masterkey";

    dpb = dpb_buffer;

    // Specify the version of the parameter buffer, always the
    // compile-time constant isc_dpb_version1.
    *dpb++ = isc_dpb_version1;

    //    # of cache buffers to allocate for use with the database,
    //   default = // 75. In the API guide I think isc_dpb_num_buffers is
    //specified as // isc_num_buffers, but that I could not get to work.
    *dpb++ = isc_dpb_num_buffers;
    *dpb++ = 1;
    *dpb++ = 90;

    *dpb++ = isc_dpb_user_name; //    Save user-name in dpb.
    *dpb++ = strlen(uname);
    for (p = uname; *p;)
        *dpb++ = *p++;

    *dpb++ = isc_dpb_password;  //   Save password in dpb.
    *dpb++ = strlen(upass);
    for (p = upass; *p;)
        *dpb++ = *p++;

    dpb_length = dpb - dpb_buffer;

    //   Attach to the database.
    isc_attach_database(status_vector, strlen(str), str, &db1,dpb_length, dpb_buffer);
}

您可以将环境变量
ISC_USER
ISC_PASSWORD
设置为连接到Firebird数据库,而无需在应用程序中指定用户名和密码。看见请注意,链接文档只讨论了
SYSDBA
帐户,但它适用于任何帐户

海伦·博里的《火鸟》第二版说:

可以在服务器上设置两个环境变量
ISC_USER
ISC_PASSWORD
,以避免在本地使用数据库时需要登录。您将能够执行指定用户允许执行的所有操作,而无需每次提供凭据

文本提到“在服务器上”,但实际上它是客户端应用程序的本地

Interbase 6.0操作指南(可从中获得)指出:

如果在连接到数据库或 运行gbak、gstatgfix等实用程序时,InterBase会查看是否设置了
ISC_用户
ISC_密码
环境变量,并将该用户和密码用作InterBase用户

虽然设置这些环境变量很方便,但显然不方便 如果存在安全问题,则建议使用


我已经试过了。我在终端中设置了这些凭据。但是,当我执行代码时,它仍然要求提供连接到服务器的凭据database@user3723478您确定您的执行环境与您的终端共享这些环境变量吗?奇怪。我通常不使用C API,但我查看了firebird源代码,在那里,用户名和密码被添加到附加方法中的dpb中。如果dpb中没有提供。我会看看我是否可以复制这个(可能需要几天)。