首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取表的SQL Server架构

获取表的SQL Server架构
EN

Stack Overflow用户
提问于 2009-04-08 14:58:16
回答 4查看 6.9K关注 0票数 1

我使用下面的C#代码来返回存储过程结果以及这些结果的模式。下面是我的代码(简化的)目前的样子...

代码语言:javascript
复制
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand("MyStoredProcedure");
IDataReader drData = db.ExecuteReader(dbCommand);

DataTable tblSchema;
tblSchema  = drData.GetSchemaTable();

GetSchemaTable返回空。我读到我需要将CommandBehavior.KeyInfo传递给ExecuteReader方法,但我不清楚这将是怎样的代码结构,因为我正在将dbCommand传递给ExecuteReader。

EN

回答 4

Stack Overflow用户

发布于 2009-04-08 15:05:28

如果您使用的是System.Data.Common.DbCommand,那么我想您可以调用

代码语言:javascript
复制
IDataReader drData = dbCommand.ExecuteReader(CommandBehavior.KeyInfo);

编辑

您还可以使用

代码语言:javascript
复制
DataSet ds = new DataSet();
db.LoadDataSet(dbCommand, ds, "tableName");

代码语言:javascript
复制
db.ExecuteDataSet

这是一个很有用的link

希望它能回答你的问题

票数 1
EN

Stack Overflow用户

发布于 2009-04-08 15:06:37

获取SQL Server存储过程的模式的最佳方法是使用sql:

代码语言:javascript
复制
EXEC sp_help MyStoredProcedure

请参阅http://msdn.microsoft.com/en-us/library/aa933429(SQL.80).aspx

票数 1
EN

Stack Overflow用户

发布于 2009-04-09 12:31:55

尴尬的旧代码时间。这是我第一次学习.NET 1.1时使用的,教我的人坚持使用数据集/表,而不是业务对象。它大约有5年的历史,是从一个旧的库中剥离出来的,但是给定一个表名,它将为您提供一个包含表模式的数据集。

代码语言:javascript
复制
public static DataSet GetTableSchema(string tableName)
{
    string query = string.Format("SELECT TOP 0 * FROM {0}", tableName);

    using (SqlConnection localSqlConn = new SqlConnection(GetConnectionString()))
    {
        DataSet ds = new DataSet();

        SqlCommand sqlCmd = new SqlCommand(query, localSqlConn);
        SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);

        sda.FillSchema(ds, SchemaType.Source, tableName);
        sda.Fill(ds, tableName);

        sda.Dispose();

        return ds;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/730421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档