【发布时间】:2013-05-30 15:19:39
【问题描述】:
我对 SQL 运行了一个简单的查询,但似乎无法正常工作。
DataTable loDTDOffre = new DataTable();
SqlCommand loSQLCommand = new SqlCommand("dbo.SP_StoredProc", loConnectionBD.ConnectionSql);
loSQLCommand.CommandType = CommandType.StoredProcedure;
loSQLCommand.Parameters.Add("@liNoUnit", SqlDbType.Int);
loSQLCommand.Parameters["@liNoUnit"].Value = noUniteProduction;
SqlDataAdapter loSqlDataAdapter = new SqlDataAdapter(loSQLCommand);
loSqlDataAdapter.SelectCommand = loSQLCommand;
loSqlDataAdapter.Fill(loDTDOffre);
我的数据库连接已打开,在 SQL Management Studio 中执行的存储过程工作正常。我在 VS2010 中得到的错误信息是:
Warning: Fatal error 50000 occurred at May 30 2013 11:17AM. Note the error and time, and contact your system administrator.
Process ID 59 has raised user error 50000, severity 20. SQL Server is terminating this process.
有什么方法可以更清楚地了解错误信息,代码似乎是正确的。错误信息太笼统了,我不知道我做错了什么。
我的存储过程返回一个简单的选择,一行。
谢谢
【问题讨论】:
-
看到存储过程不会有什么坏处。我很好奇那里是否有可能导致这种情况的
raiseerror子句。 -
实际上我认为问题在于您将
StoredProcedure命令类型分配给SelectCommand。我会尝试放弃你的SqlDataAdapter并用loDTDOffre.Load(loSQLCommand.ExecuteReader());替换它 -
如果我运行 SQL Profiler,我会看到我的查询(存储过程),从 SQL Studio 执行它,一切正常。我的存储过程中有一个“raiseerror”,但从未到达该行。 VS2010中没有内部异常,试图了解更多关于异常的细节,“ExecuteReader”示例也不起作用。
标签: c# stored-procedures sqldataadapter