2014-02-08 156 views
-1

必須聲明標量變量 「@Id」「必須聲明標量變量」 錯誤

SqlConnection con = new SqlConnection(@"connectionstring"); 
con.Open(); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 
cmd.CommandText = ("SELECT Goal from Planning WHERE Id = @Id"); 
int goal = (int)cmd.ExecuteScalar(); 

有人能幫助我嗎?

+0

第一行是您的錯誤信息給的值? – Olli

+0

是的,這是我的第一個錯誤信息 – qU3st

+0

順便說一句,你的_connection string_似乎也是錯誤的。如果你的'connectionstring'是一個_variable_,你應該像'new SqlConnection(connectionstring)'而不是'new SqlConnection(@「connectionstring」)''一樣使用它。 –

回答

0

由於您在SqlCommand中聲明瞭Id參數,但未添加任何值。

而當您在CommandText屬性中分配文本時,不需要使用()

cmd.CommandText = "SELECT Goal from Planning WHERE Id = @Id"; 
cmd.Parameters.AddWithValue("@Id", YourIdValue); 
int goal = (int)cmd.ExecuteScalar(); 

還可以使用using statement處置您的SqlConnectionSqlCommand

這裏有一個完整的例子;

using(SqlConnection con = new SqlConnection(connString)) 
using(SqlCommand cmd = new SqlCommand()) 
{ 
    cmd.Connection = con; 
    cmd.CommandText = "SELECT Goal from Planning WHERE Id = @Id"; 
    cmd.Parameters.AddWithValue("@Id", YourIdValue); 
    try 
    { 
     conn.Open(); 
     int goal = (int)cmd.ExecuteScalar(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
1

你應該給你的參數

cmd.Parameters.AddWithValue("@Id", value); 
+0

[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/) –