简体   繁体   English

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

[英]Execute the same SQL query across multiple ODBC databases

How to execute the same SQL query across multiple ODBC databases., like MySQL, Oracle and SQL Server. 如何跨多个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;
    }

My objective is to do select all tables name from different DSN, like MySQL, Oracle etc. 我的目标是从不同的DSN中选择所有表名,例如MySQL,Oracle等。

In general you can use the same SQL query in various databases only if it is simple query. 通常,只有简单查询,才可以在各种数据库中使用相同的SQL查询。 There are differences when you need to use date, datetime, string functions etc. 在需要使用日期,日期时间,字符串函数等时会有所不同。

From your query I see that you want to get table names (part of database schema). 从查询中,我看到您想要获取表名(数据库模式的一部分)。 Such query is vendor specific. 这种查询是特定于供应商的。 Each vendor saves schema info in different tables, so for PostgreSQL you will have to look at information_schema.columns , for Oracle there is user_tab_columns and Informix use systables . 每个供应商都将模式信息保存在不同的表中,因此对于PostgreSQL,您将不得不查看information_schema.columns ;对于Oracle,则有user_tab_columns而Informix使用systables You can create queries for each database and then try them one by one until one succeeds. 您可以为每个数据库创建查询,然后一个接一个地尝试直到成功。 But most DB drivers has procedures/methods to discover DB schema. 但是大多数数据库驱动程序都有发现数据库模式的过程/方法。 In Java there is DatabaseMetaData.getTables() , in ODBC you can use SQLTables() . 在Java中,有DatabaseMetaData.getTables() ;在ODBC中,您可以使用SQLTables() For C# look at: Retrieving table schema information using C# 对于C#,请查看: 使用C#检索表架构信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM