2011-10-29 3 views
-3

제발 도와주세요,이 코드를 작성했지만 제 실수는 아니며 올바른 코드는 무엇입니까?lable의 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을 사용해야합니다. 또한 제대로 사용하여 문에서 그들을 포장하여 같은 SQL 연결 및 SQL 명령어로는 IDisposable 자원을 폐기해야합니다

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); 
     } 
    }