2012-04-22 38 views
2

我在嘗試更新特定行的數據庫時遇到了一些問題,我收到錯誤Must declare scalar variable "@lvl"。不太確定我應該做什麼。我是否需要在SQL語句中聲明值?SQLException必須聲明標量變量「@variableName」

private void button1_Click(object sender, EventArgs e) 
{ 
    GridViewCellInfo grd = (GridViewCellInfo)radGridView1.Rows[0].Cells[0]; 
    string lvl = grd.Value.ToString(); 

    string sqlPatientCmd = 
     @"UPDATE MotorTB 
      SET RightColumn = @RightColumnCB, LeftColumn = @leftColumnCB 
      WHERE (Level = @lvl)"; 
    SqlConnection connString = new SqlConnection(@"Data Source=MERCURY\SQLEXPRESS;Initial Catalog=AsiaDB; Integrated Security=SSPI;User ID=MERCURY\Sophie;"); 
    try { 
     connString.Open(); 

     SqlCommand sqlCmdStatement = new SqlCommand(sqlPatientCmd, connString); 

     GridViewCellInfo grid; 
     grid = (GridViewCellInfo)radGridView1.Rows[0].Cells[1]; 
     string rightColVal = grid.Value.ToString(); 

     grid = (GridViewCellInfo)radGridView1.Rows[0].Cells[2]; 
     string leftColVal = grid.Value.ToString(); 

     sqlCmdStatement.Parameters.AddWithValue("@rightColumnCB", rightColVal); 
     sqlCmdStatement.Parameters.AddWithValue("@leftColumnCB", leftColVal); 
     sqlCmdStatement.ExecuteScalar(); 
    } catch (Exception ex) { 
     Console.WriteLine(ex.ToString()); 
    } 

    // Close the connection 
    try { 
     connString.Close(); 
    } catch (Exception ex) { 
     Console.WriteLine(ex.ToString()); 
    } 
} 
+0

錯誤消息告訴你到底如何解決問題... – 2012-04-22 15:12:18

回答

2

你需要的拉特VAR添加爲SqlParamter

sqlCmdStatement.Parameters.AddWithValue("@lvl", lvl); 
+0

謝謝。它的工作我之前嘗試過,但得到了同樣的錯誤。我將我的SQL語句更改爲: – user1155383 2012-04-22 14:39:14

+1

我看不到新語句。 – SimSimY 2012-04-22 14:42:22

1

@lvl需要作爲參數提供或查詢另有規定。