跨多个 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#
如何跨多个 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#