【问题标题】:How to specify SYBASE Database name in ODBC in .NET如何在 .NET 中的 ODBC 中指定 SYBASE 数据库名称
【发布时间】:2011-05-29 06:22:18
【问题描述】:

我在 C# 中使用 Sybase ODBC 驱动程序。 效果很好,但我找不到指定我正在操作的数据库的方法。

作为解决方法,我正在使用这个双点通知

 SELECT * FROM DB_NAME..TABLE_NAME

但我想知道是否有办法在连接字符串中指定 DB(如 MS SQL - 初始目录)

下面是我用来创建连接字符串的代码:

string connString = string.Format ( "Driver={{{0}}};srvr={1};uid={2};pwd={3};Initial Catalog={4};",
 GetConfigEntry ( "SYBASE_DRIVER" ),
 GetConfigEntry ( "SERVER" ), 
 GetConfigEntry ( "LOGIN" ),
 GetConfigEntry ( "PSWD" ),
 GetConfigEntry ( "DB" )
);

编辑: 我正在使用 {MERANT 3.60 32-BIT Sybase} 驱动程序

【问题讨论】:

  • 你也可以作为第一个命令使用 USE
  • 我已经试过了:使用数据库; SELECT ...并在附近说未知命令;

标签: .net odbc sybase


【解决方案1】:
  1. 您可能在这里误解了一些基本原理。与 Sybase 或 MS 的本机连接不同,ODBC 连接处理数据源定义中标识的一个且仅一个 db_name。 ODBC 不理解或无法更改数据库上下文。因此,为您需要连接的每个 db_name 创建一个新的数据源定义。

    • 请注意,每个 ODBC 驱动程序(供应商)都有自己的特点
    • 使用本机连接 (CT-Library) 比 ODBC 快得多,而且没有诸如此类的限制。
      .
  2. Sybase 还允许在每次登录时设置默认的db_name。您可以更改它,以便来自该登录名的任何连接直接进入特定数据库。

  3. Sybase 当然允许在您连接后切换数据库上下文。您可以:

    USE db_name
    GO
    不要忘记"GO"。 “USE db_name”必须是批处理中的唯一命令。

  4. 1234563正确的方法。每个组件都有一个默认值(db_name 是当前数据库;userdbo)。根据 ISO/IEC/ANSI SQL 标准,这不是一种解决方法,而是必需的方法。

【讨论】:

    【解决方案2】:

    使用以下连接字符串,您可以在 C# 中使用 Sybase 并指定初始目录。

    Data Source=\\myserver\myvolume\mypat;Initial Catalog=mydd.add;User    ID=myUsername;Password=myPassword;ServerType=REMOTE;
    

    无论如何,您的连接字符串也具有初始目录属性。

    【讨论】:

    • 初始目录对我不起作用...也许我正在使用 {MERANT 3.60 32-BIT Sybase} 驱动程序很重要
    • 嗯...试试这个:Provider=MSDASQL.1;Password=password;Persist Security Info=True;User ID=userName;Extended Properties="DRIVER={MERANT 3.60 32-BIT Sybase} ;UID=userName;DB=testDB;SRVR=DSRV0002;PWD=password";初始目录=testDB
    猜你喜欢
    • 1970-01-01
    • 2011-07-17
    • 2014-11-03
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2018-01-02
    • 2020-01-27
    • 2023-01-19
    相关资源
    最近更新 更多