2011-09-01 59 views
0

,如果你请我堆出来我有一个错误标量误差

错误:

必须声明标量变量“@Criteria”。

,因为我没有很多的经验,我无法找到感谢

代码问题:

public static void CreateReveiw(string paperId, string Criteria_Id, string Grate) 
{ 



    var sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 




    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = sqlCon; 
    cmd.CommandText = "select Review_paper_ID from ReviewPaper where Paper_ID= @PaperId"; 
    cmd.Parameters.AddWithValue("@PaperId", paperId); 
    cmd.Connection.Open(); 
    string Review_paper_ID = cmd.ExecuteScalar().ToString(); 
    cmd.Connection.Close(); 
    cmd.Dispose(); 





    string query2 = @"insert into ReviewPaperCriteria(Review_paper_ID,Criteria_ID,Grate) 
        values(@Review_paper_ID,@Criteria,@Grate);select SCOPE_IDENTITY() as RPID"; 

    cmd = new SqlCommand(query2, sqlCon); 
    cmd.Parameters.AddWithValue("@Review_paper_ID", Review_paper_ID); 
    cmd.Parameters.AddWithValue("@Criteria_ID", Criteria_Id); 
    cmd.Parameters.AddWithValue("@Grate", Grate); 

    string ReviewPaperId; 

    try 
    { 
     cmd.Connection.Open(); 
     ReviewPaperId = cmd.ExecuteScalar().ToString(); 
     cmd.Connection.Close(); 
    } 
    catch (Exception ee) { throw ee; } 
    finally { cmd.Dispose(); } 



    } 
+0

** **从不写'赶上(例外EE){抛出EE; }'。它销毁堆栈跟踪。 – SLaks

+0

@SLaks将'catch(Exception ee){throw; }'维护堆栈跟踪? –

+0

@Bala:是的。这很好,但没用。 – SLaks

回答

1

你声明变量@Criteria但尝试使用@Criteria_ID将其值设置。

变化

cmd.Parameters.AddWithValue("@Criteria_ID", Criteria_Id); 

cmd.Parameters.AddWithValue("@Criteria", Criteria_Id); 
3

变化

cmd.Parameters.AddWithValue("@Criteria_ID", Criteria_Id); 

cmd.Parameters.AddWithValue("@Criteria", Criteria_Id); 

或更改查询条ng(query2)以匹配使用的参数名称(@Criteria_ID)。

3

您的参数是@Criteria_ID,但您在SQL中引用了@Criteria。您需要将其中一个位置更改为一致。

string query2 = @"insert into ReviewPaperCriteria(Review_paper_ID,Criteria_ID,Grate) 
       values(@Review_paper_ID,@Criteria,@Grate);select SCOPE_IDENTITY() as RPID"; 
             ^^^^^^^^^  
... 

cmd.Parameters.AddWithValue("@Criteria_ID", Criteria_Id); 
          ^^^^^^^^^^^^