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

时间:2015-05-28 07:37:33

标签: c# sql asp.net odbc

如何跨多个ODBC数据库执行相同的SQL查询,如MySQL,Oracle和SQL Server。

  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;
    }

我的目标是从不同的DSN中选择所有表名,如MySQL,Oracle等。

1 个答案:

答案 0 :(得分:2)

通常,只有在简单查询时才能在各种数据库中使用相同的SQL查询。当您需要使用日期,日期时间,字符串函数等时,存在差异。

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