0
我在我的C#代码中有很多存储过程调用,但只有这一个保持失败。我正在运行VS 2012和SQL Server 2008 R2。我的连接字符串对于我的所有存储过程都是相同的,并且我拥有相同的权限。找不到存储过程
我得到这个错误
未能找到存储过程 'StP_Map_Preload @bldg,@linePos,@startD,@lineNo,@Pgrm,@apPos,@sessionID'。
System.Exception的{} System.Data.SqlClient.SqlException
在这条线:
SqlDataReader dr = cmd.ExecuteReader();:
我试图创建一个新的存储过程使用相同的代码,设置权限,但它失败太。
public ArrayList DetailPreload(string bldg, string linePos, DateTime startD, string lineNo, string Pgrm, int apPos, string sessionID)
{
string strSQL = "StP_Map_Preload @bldg, @linePos, @startD, @lineNo, @Pgrm, @apPos, @sessionID";
ArrayList list = new ArrayList();
using (SqlConnection conStr = new SqlConnection(connM))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@bldg", bldg);
cmd.Parameters.AddWithValue("@linePos", linePos);
cmd.Parameters.AddWithValue("@startD", startD);
cmd.Parameters.AddWithValue("@lineNo", lineNo);
cmd.Parameters.AddWithValue("@Pgrm", Pgrm);
cmd.Parameters.AddWithValue("@apPos", apPos);
cmd.Parameters.AddWithValue("@sessionID", sessionID);
cmd.CommandText = strSQL;
cmd.Connection = conStr;
conStr.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
list.Add(new
{
company = dr["Company"],
Pgrm = dr["Pgrm"],
lineNum = dr["lineNum"],
lineStation = dr["lineStation"],
jobCount = dr["Job"],
item = dr["Item"],
qty = dr["Qty"],
partQty = dr["partQty"],
invCnt = dr["invCnt"],
runID = dr["runID"]
});
}
conStr.Close();
return list;
}
}
}
我的存储过程是在SQL Server中,我可以在SQL Server中执行它
/*
StP_Map_Preload 'AA-12', '7', '09/19/2014', '', '247', 7, 'val2gxfh5ihoqy4tshzl4tp3'
*/
ALTER proc [dbo].[StP_Map_Preload]
@Bldg varchar(10),
@linePos varchar(5),
@startD date,
@LineNo varchar(5),
@Pgrm varchar(5),
@apPos int,
@sessionID varchar(50)
AS
BEGIN
declare @sql varchar(Max), @PST varchar(20),
@SI1 varchar(5), @SI2 varchar(5), @SI3 varchar(5),
@hasAP bit, @CCLen varchar,
@Co varchar(5), @CCs varchar(25), @lsGrp varchar(max)...
'公共ArrayList' .....不寒而栗。请停止使用ArrayLists。 – gunr2171 2014-09-22 17:14:41
你应该看看[我们可以停止使用AddWithValue()了吗?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)并停止使用'.AddWithValue()' - 它可能会导致意想不到的结果...以及:[坏习惯踢:声明VARCHAR没有(长度)](http://sqlblog.com/blogs/aaron_bertrand/ archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx) - 你应该总是**为你使用的任何'varchar'变量和参数提供一个长度 – 2014-09-22 17:17:39
@ gunr2171,代码就像是2002年! – 2014-09-22 17:17:49