我使用下面的C#代码来返回存储过程结果以及这些结果的模式。下面是我的代码(简化的)目前的样子...
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。
发布于 2009-04-08 15:05:28
如果您使用的是System.Data.Common.DbCommand,那么我想您可以调用
IDataReader drData = dbCommand.ExecuteReader(CommandBehavior.KeyInfo);编辑
您还可以使用
DataSet ds = new DataSet();
db.LoadDataSet(dbCommand, ds, "tableName");或
db.ExecuteDataSet这是一个很有用的link
希望它能回答你的问题
发布于 2009-04-08 15:06:37
获取SQL Server存储过程的模式的最佳方法是使用sql:
EXEC sp_help MyStoredProcedure请参阅http://msdn.microsoft.com/en-us/library/aa933429(SQL.80).aspx
发布于 2009-04-09 12:31:55
尴尬的旧代码时间。这是我第一次学习.NET 1.1时使用的,教我的人坚持使用数据集/表,而不是业务对象。它大约有5年的历史,是从一个旧的库中剥离出来的,但是给定一个表名,它将为您提供一个包含表模式的数据集。
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;
}
}https://stackoverflow.com/questions/730421
复制相似问题