这是bde有问题,我以前也经常碰到的,你重新安装一下bde,然后用bde explore进行试一下,如果没有问题的话就可以了!

解决方案 »

  1.   

    在Delphi中建立和使用别名 ---- 通 常 我 们 在Delphi 外, 通 过 使 用Borland 数 据 库 引 擎(BDE) 的 设 置 单 元(bdecfg.exe) 来 建 立 和 设 置 别 名(Alias), 但 是, 实 际 上 用 户 可 以 在Delphi 或 应 用 程 序 中 用TDatabase Component 或 其 他 方 法 建 立 和 使 用 别 名, 而 不 必 在IDAPI.CFG 中 预 先 定 义。 ---- 建 立 有 效 的 别 名 是 非 常 重 要 的, 别 名 详 细 说 明 了 数 据 库 的 定 位 信 息 和 连 接 数 据 库 服 务 器 的 参 数, 当 发 布 应 用 程 序 时 不 必 担 心IDAPI.CFG 中 是 否 有 某 项 设 置。 利 用TDatabase Component 建 立 别 名 
    ---- 建 立 和 设 置 一 个 使 用 标 准 数 据 库 的 别 名 的 步 骤 如 下。  //通过“对象观察器”建立BDE别名
        1.建 立 一 个 新 工 程(Project)。 
        2.将 组 件(Component) TDatabase、TTable、TDataSource、TDBGrid 和TButton 放 在FORM 上。
        3.双 击TDatabase Component 或 在TDatabase 快 速 菜 单 上 选 择Database Editor 运 行Database 属 性 编 辑 器。 
        4.将Database Name 设 置 成‘ZldchAlias’, 这 个 名 字 将 被 当 作 别 名, 用 来 设 置 数 据 集 组 件TTable、TQuery、TStoredProc 等 的DatabaseName 属 性。 
        5.将Driver Name 设 置 成STANDARD。 
        6.单 击Defaults 按 钮, 将 PATH= 自 动 加 在 Parameter Overrides 框 中。 
        7.将PATH= 设 置 成PATH=C: , 单 击OK 按 钮 关 闭 Database Editor。 
        8.单 击OK 按 钮 关 闭Database Editor。 
        9.将TTable 的DatabaseName 属 性 设 置 成‘ZldchAlias’。 
        10.将TDataSource 的DataSet 属 性 设 置 成‘Table1’。 
        11.将DBGrid 的DataSource 属 性 设 置 成‘DataSource1’。 
        12.在Tbutton 的OnClick 事 件 过 程 中 加 入 下 列 代 码: 
        procedure TForm1.Button1Click(Sender:Tobject); 
        begin 
            Table1.Tablename=‘customer’; 
            Table1.Active:=true; 
        end;     13.运 行 程 序。 
    上 面3 ~12 步 也 可 以 用 以 下 过 程 实 现: 
    MyAddStandAlias(AliasN: String;DbLocat: String;DriverN:string ); //使用程序的方法建立BDE别名
    //{AliasN 别 名 名,
    //DbLocat 数 据 库 定 位 目 录,DriverN 联 结 驱 动 类 型}
    begin
        with Form1.Database1 do
        begin
            DatabaseName:= AliasN;
             DriverName:= ‘STANDARD’;
             Params.Clear;
             Params.Add(‘PATH=’ +DbLocat);
             Params.Add(‘DEFAULT DRIVER=’ +DriverN);
        end
    end;procedure TForm1.Button1Click(Sender:Tobject);
    begin
        MyAddStandAlias(‘ZldchAlias’,‘C:  PARADOX’);
         Table1.DatabaseName:=‘ZldchAlias’;
         DataSource1.DataSet:= Table1;
         DBGrid1.DataSource:= DataSource1;
        Table1.Tablename=‘customer’;
        Table1.Active:=true;
    end;建 立 使 用INTRBASE 数 据 库 的 别 名
    ---- 建 立 使 用INTRBASE 数 据 库 别 名 的 步 骤 如 下。 
    ---- 1 ~4 步 同 上。 
    ---- 5. 将Driver Name 设 置 为INTRBASE。 
    ---- 6. 单 击Defaults 按 钮, 下 列 内 容 会 自 动 加 在 Parameter Overrides 框 中: 
        SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB
        USER NAME=MYNAME
        OPEN MODE=READ/WRITE
        SCHEMA CACHE SIZE=8
        LANGDRIVER=
        SQLQRYMODE=
        SQLPASSTHRU MODE=NOT SHARED
        SCHEMA CACHE TIME = -1
        PASSWORD=    7. 将 以 上 内 容 改 为:
        SERVER NAME=C:\Program Files\Borland\Delphi 3\Demos\Data\EMPLOYEE.GDB
        USER NAME=SYSDBA
        OPEN MODE=READ/WRITE
        SCHEMA CACHE SIZE=8
        LANGDRIVER=
        SQLQRYMODE=
        SQLPASSTHRU MODE=NOT SHARED
        SCHEMA CACHE TIME = -1
        PASSWORD=masterkey---- 8. 将TDatabase 的 属 性LoginPrompt 设 置 成‘False’, 如 用 户 在Parameter Overrides 框 中 给 出 了 正 确 的PASSWORD, 连 接 数 据 库 时 将 不 会 提 示 要 求 输 入 口 令。 请 注 意: 如 果 在Parameter Overrides 框 中 给 出 的PASSWORD 不 正 确, 而TDatabase 的 属 性LoginPrompt 设 置 为‘False’, 程 序 运 行 时 将 出 错, 但 并 不 会 提 示 要 求 重 新 输 入 正 确 口 令。Intrbase 安 装 后, 系 统 唯 一 授 权 的 用 户 是SYSDBA, 缺 省 口 令 是“masterkey”, 所 有 其 他 的 用 户 都 必 须 由SYSDBA 添 加, 所 以 在Intrbase 系 统 安 装 后 要 尽 快 更 改 用 户SYSDBA 的 口 令。 ---- 9、10、12 步 同 上 文 的8、9、11 步。 
    ---- 11. 将TDataSource 的DataSet 属 性 设 置 成‘Query1’。 
    ---- 13. 在Tbutton 的OnClick 事 件 过 程 中 加 入 下 列 代 码: ---- procedure TForm1.Button1Click(Sender:Tobject); 
    ---- begin 
    ----     Query1.SQL.Clear; 
    ----     Query1.SQL.ADD(‘SELECT DISTINCT * FROM CUSTOMER C ,SALES S WHERE --- (S.CUST_NO=C.CUST_NO) ORDER BY C.CUST_NO, C.CUSTOMER’); 
        ---- Query1.Active:=True; 
    ---- end; 
      

  2.   

    ---- 14. 运 行 程 序。 
    ---- 过 程MyAddStandAlias 的 参 数 可 以 通 过 各 种 方 式 赋 值。 目 录、 服 务 器 名、 路 径、 数 据 库 名 和 其 他 别 名 所 需 的 参 数 都 可 以 通 过 输 入 对 话 框 或 从.INI 文 件 读 入 程 序 中。 通 过 以 上 方 法 建 立 的 别 名 只 在 程 序 运 行 时 存 在, 其 他 应 用 程 序 不 能 使 用。 利 用Session 建 立、 修 改、 删 除 别 名 
    ---- 所 有 数 据 库 管 理 应 用 程 序 都 自 动 提 供 一 个 名 为Session 的Session 组 件。 每 个 和 数 据 库 程 序 相 关 的 数 据 集 组 件 都 包 含SessionName 属 性, 它 决 定 了 和 该 组 件 相 关 的Session 组 件。 因 为Session 封 装 了 一 系 列 数 据 库 连 接 特 性, 大 部 分Session 组 件 的 方 法 都 通 过BDE 别 名 工 作。 每 个 和Session 有 关 联 的 数 据 库 组 件 都 有 别 名( 尽 管 在 处 理PARADOX 和DBASE 数 据 库 时, 完 整 的 路 径 可 以 取 代 别 名), 通 过Session 可 以 检 测 和 决 定 别 名 的 可 见 性、 跟 踪 别 名 名 和 其 他 连 接 驱 动 信 息 以 及 建 立、 修 改 和 删 除 别 名。 ---- Session 的 设 置 模 式(ConfigMode) 属 性, 决 定 了 什 么 样 的BDE 别 名 对 它 是 可 见 的。 默 认 设 置 是cmAll, 它 可 解 释 成[cfmVirtual or cfmPersistent]。 如 果 设 置 模 式 值 为cmAll, 由Session 建 立 的 所 有 别 名、 用 户 系 统BDE 设 置 文 件 中 预 定 义 的 别 名 以 及BDE 在 内 存 中 维 护 的 所 有 别 名 均 可 见。 ---- 设 置 模 式 的 主 要 目 的 是, 允 许 应 用 程 序 详 细 说 明 和 限 定 别 名 在Session 级 别 上 的 可 见 性。 例 如 把 设 置 模 式 设 置 成[cfmSession], 可 使Session 只 可 见 那 些 由 其 建 立 的 别 名, 所 有 其 他 的 别 名 都 无 效。 ---- 当 别 名 在Session 存 在 期 间 建 立 后,BDE 在 内 存 中 建 立 一 个 它 的 拷 贝。 这 个 局 部 拷 贝 只 对 建 立 它 的Session 有 效, 除 非 在 同 一 个 应 用 程 序 中 其 他Session 的 模 式 设 置 成cmAll 或cfmPersistent。 ---- 使 用Session 的SaveConfigFile 方 法, 可 以 将 内 存 中 的 别 名 写 入BDE 设 置 文 件 中, 这 样 其 他BDE 允 许 的 应 用 程 序 就 可 以 使 用 该 别 名。 ---- Session 组 件 有 五 个 方 法, 允 许 应 用 程 序 跟 踪BDE 别 名 的 参 数 和 驱 动 程 序 等 信 息: 
    ---- GetAliasNames: 列 出Session 已 经 处 理 过 的 别 名; 
    ---- GetAliasParams: 列 出 指 定 的 别 名 的 参 数; 
    ---- GetAliasDriverName: 返 回 包 含 别 名 使 用 的 驱 动 程 序 名 的 字 符 串; 
    ---- GetDriverNames: 返 回 所 有 有 效 的BDE 驱 动 程 序; 
    ---- GetDriverParams: 返 回 指 定 的 驱 动 程 序 的 驱 动 参 数。 ---- Session 可 以 在 其 存 在 期 间 建 立、 修 改 和 删 除 别 名。 方 法AddAlias 为SQL 数 据 库 服 务 器 建 立 一 个 新 的BDE 据 工 作 区。 方 法AddStandardAlias 为PARADOX、DBASE、ASCII 表 建 立 一 个 新 的BDE 标 准 别 名。 ---- AddAlias 需 要 三 个 参 数: 一 个 包 含 别 名 工 作 区 名 的 字 符 串、 一 个 说 明SQL 连 接 驱 动 类 型 的 字 符 串、 一 个 汇 集 连 接 参 数 的 列 表 字 符 串, 其 格 式 为: ---- procedure AddAlias(const Name, Driver: string; List: TStrings); ---- AddStandardAlias 需 要 三 个 参 数: 别 名 名、PARADOX 和DBASE 表 存 放 的 完 整 路 径、 当 试 图 打 开 一 个 没 有 扩 展 名 表 时 的 默 认 驱 动 类 型, 其 格 式 为: ---- procedure AddStandardAlias(const Name, Path, DefaultDriver: string); ---- 当 为Session 添 加 一 个 别 名 时, 它 仅 对 该Session 和 其 他 设 置 模 式 值 为cfmPersistent 的Session 有 效。 为 了 使 新 建 的 别 名 对 所 有 的 应 用 程 序 有 效, 在 建 立 别 名 后 应 该 调 用SaveConfigFile 方 法。 ---- 修 改 别 名 可 以 调 用 过 程ModifyAlias, 它 需 要 二 个 参 数: 将 要 修 改 的 别 名 名 和 包 含 修 改 后 连 接 参 数 值 的 列 表 串, 格 式 为: ---- procedure ModifyAlias(Name: string; List: TStrings); ---- 方 法DeleteAlias 可 以 使 别 名 对Session 无 效, 但 它 不 会 删 除 写 入BDE 设 置 文 件 的 别 名。 如 果 要 将 其 从BDE 设 置 文 件 中 删 除, 需 要 在 调 用DeleteAlias 后 再 调 用SaveConfigFile。DeleteAlias 只 需 一 个 参 数: 别 名 名。 其 格 式 为: ---- procedure DeleteAlias(const Name: string); dhome.myrice.com
      

  3.   

    看来不是BDE的问题,我在VB.net中用OledbConnction国家连我建的ODBC时也出错:ORA-12514:listener
    could not resolve service_name given in connect scriptor请问一下怎样更改connect scriptor
      

  4.   

    不懂dephi但是,知道C++Builder要装update4!
      

  5.   

    修改tnsname.ora文件中的服务看看。could not resolve service_name given in connect scriptor
    或者你的连接语句错了。
      

  6.   

    oopilix:tnsnames.ora中的设置正确,没有手工写国家连接语句,用的是控件连的呀
      

  7.   

    1、首先在本地安装Oracle客户端,然后设置本地Net服务。
    2、在Odbc中建立数据源。
    2、使用Delphi连接时,输入用户system,密码manager,服务名是你上面设定的值。
      

  8.   

    你怎么确认tnsnames.ora正确?
    如果你能打开easy config这个工具,基本说明tnsnames.ora没问题。
      

  9.   

    easy config怎么打开呀,请问
      

  10.   

    在开始菜单->程序->Orcale NT->Oracle Net8 Easy Config阿
      

  11.   

    可能版本的区别,我这是net8 configuration assistant,测试本地网络服务名配置测试成功
      

  12.   

    解决了,用mircro odbc 出的错,应该用oracle odbc driver