首页 文章

c#片段从数据库加载表 - 不使用视图

提问于
浏览
0

我有下面的代码段,可以使用SQL存储过程填充表 . 我们将SQL从Stored Prcedure更改为View,并且代码片断了 . 有关如何使用视图而不是SP的任何提示?

using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["XXXX"].ConnectionString))
            using (var cmd = new SqlCommand("MYVIEW", conn))
            using (var adapter = new SqlDataAdapter(cmd))
            {
                //tried CommandType.Text too without success.
                cmd.CommandType = CommandType.StoredProcedure;
                adapter.Fill(table);
            }

错误是:

System.Data.SqlClient.SqlException(0x80131904):对过程'MYVIEW'的请求失败,因为'MYVIEW'是一个视图对象 . 在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,行动 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource 1所完成的Int32超时,任务和任务,布尔asyncWrite)在System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream ,字符串方法)在System.Data.SqlClient.SqlCommand.ExecuteReader(的CommandBehavior行为,字符串方法)在System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(的CommandBehavior行为)在System.Data.Common.DbCommand.System.Data.IDbCommand . 的ExecuteReader(的CommandBehavior行为)在System.Data.Common.DbDataAdapter.FillInternal(数据集的数据集,数据表[]数据表,的Int32 startRecord,的Int32最大记录,字符串srcTable要,IDbCommand的命令,的CommandBehavior行为)在System.Data.Common.DbDataAdapter.Fill(数据表[]数据表,的Int32 startRecord,的Int32最大记录,IDbCommand的命令,的CommandBehavior行为)在System.Data.Common.DbDataAdapter.Fill(数据表的dataTable)在moodleWCF_t est.index.btTurmaIncluir_Click(Object sender,EventArgs e)

谢谢!

1 回答

  • 2

    视图不能被称为存储过程 . 要使用视图而不是替换下面的行:

    使用(var cmd = new SqlCommand(“SELECT * FROM MYVIEW”,conn))

    cmd.CommandType = CommandType.Text;

相关问题