2011-10-29 54 views
-3

請幫助我,我寫這段代碼,但它不起作用我的錯誤是什麼,什麼是正確的代碼?在標籤中調用sql查詢

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = new SqlConnection(Class1.CnnStr); 

    cmd.CommandText = "SELECT MAX(Code) FROM Customer"; 

    cmd.Connection.Open(); 
    cmd.Parameters.AddWithValue(Code_lbl.Text,"@MAX(Code)"+1); 
    cmd.ExecuteNonQuery(); 

} 
+4

什麼是你想怎麼辦? –

+4

哇。你那邊有什麼打算? – leon

回答

0

您的查詢未收到參數,並且您正在傳遞一個參數。

另外你不要在這種情況下執行ExecuteNonQuery。 ExecuteNonQuery用於插入或修改數據的語句,但您的語句僅返回單個值。你需要的是ExecuteScalar,它從你的查詢中返回一個結果。

using(SqlConnection conn = new SqlConnection(Class1.CnnStr)) 
{ 
    conn.Open(); 
    using(SqlCommand cmd = new SqlCommand("SELECT MAX(Code) FROM Customer",conn)) 
    { 
    cmd.Connection.Open(); 
    int max = Convert.ToInt32(cmd.ExecuteScalar().ToString()); 
    } 
} 
+0

@DarinDimitrov謝謝,糾正。 – Icarus

3

您應該使用ExecuteScalar。你也應該通過包裝他們使用的語句妥善處置IDisposable的資源,如SQL連接和SQL命令:

using (var conn = new SqlConnection(Class1.CnnStr)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.CommandText = "SELECT MAX(Code) FROM Customer"; 
    var result = cmd.ExecuteScalar(); 
} 
0

如果你想分析參數,做到像下面

string commandText = "SELECT MAX(Code) FROM Customer WHERE ShopID = @ID;"; 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    using(SqlCommand command = new SqlCommand(commandText, connection)) 
    { 
     command.Parameters.AddWithValue("@ID", id); // e.g id is int = 23; 

     try 
     { 
      connection.Open(); 
      var maxCode= command.ExecuteScalar(); 
      Console.WriteLine("Max: {0}", maxCode); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    }