跨多个 ODBC 数据库执行相同的 SQL 查询

Execute the same SQL query across multiple ODBC databases

如何跨多个 ODBC 数据库执行相同的 SQL 查询。例如 MySQL、Oracle 和 SQL 服务器。

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Data;
  namespace DataAccessLayer
  public DataSet GetSourceTables()
    {
        string query = "Select DISTINCT(name) FROM sys.Tables";
        DataSet ds = new DBHelper().ExecuteDataSet(query);
        return ds;
    }

我的 objective 是 select 来自不同 DSN 的所有表名,例如 MySQL、Oracle 等

一般情况下,您可以在各种数据库中使用相同的 SQL 查询,前提是它是简单查询。在需要使用日期、日期时间、字符串函数等时存在差异

从您的查询中我看到您想要获取 table 个名称(数据库架构的一部分)。这种查询是特定于供应商的。每个供应商将模式信息保存在不同的 table 中,因此对于 PostgreSQL 您必须查看 information_schema.columns,对于 Oracle 有 user_tab_columns 而 Informix 使用 systables.您可以为每个数据库创建查询,然后一个一个地尝试,直到一个成功。但是大多数数据库驱动程序有 procedures/methods 来发现数据库模式。在Java中有DatabaseMetaData.getTables(),在ODBC中你可以使用SQLTables()。对于 C#,请查看:Retrieving table schema information using C#