2012-10-12 2 views
1

여기에 공용 DataTable이 있고 코드가 올바르게 보이지만 아무것도 반환하지 않고 OrderID가 정확하고 쿼리 자체가 정확합니다. 아무 것도 반환하지 않습니다 ... 아무도 왜 내게 말할 수 있습니까? ?C# SQL 쿼리가 반환되지 않습니다.

public DataTable get_OrderTransaction_Master_ByOrderID(Int64 orderID) 
    { 

     cn = new SqlConnection(objCommon.IpcConnectionString); 
     cn.Open(); 

     string query = "select transactionID from dbo.OrderTransaction_Master where orderID = " + orderID; 
     SqlCommand queryCommand = new SqlCommand(query, cn); 
     SqlDataReader queryCommandReader = queryCommand.ExecuteReader(); 
     DataTable dataTable = new DataTable(); 
     dataTable.Load(queryCommandReader); 
     cn.Close(); 
     return dataTable; 

    } 
+0

이렇게 정확하게 데이터베이스에 대해 동일한 쿼리를 제출하면 (예 : SQL 관리 스튜디오) 결과가 나타 납니까? – kaveman

+0

Sql Management Studio를 사용하여 쿼리를 시도한 적이 있습니까? 해당 도구에서 오류가 명백 해지는 경우가 있습니다. – Steve

답변

2

주의해야 할 점은 :

이 시도 : 변경 쿼리 문자열과 매개 변수를 추가하기 위해 줄을 추가 이것은 불완전한 정보를 기반으로 추측이다.

string query = "select transactionID from dbo.OrderTransaction_Master where orderID = @OrderId"; 
    SqlCommand queryCommand = new SqlCommand(query, cn); 
    queryCommand.Parameters.AddWithValue("@OrderId", orderID); 
    SqlDataReader queryCommandReader = queryCommand.ExecuteReader(); 

설명 :뿐만 아니라이 SQL Injection을 방지 할 수 있습니다, 그것은 자동으로 주문 ID가 올바르게 처리되는 것을 보장합니다.

데이터베이스의 OrderId에 대한 데이터 형식을 지정하지 않았습니다. 나는 그것이 숫자가 아닌 것 같아요. (guid 또는 varchar - 숫자가 아닌 ID를 사용하는 데이터베이스를 보았으므로 생각할 수 없습니다.) 숫자가 아닌 경우 따옴표 값이 누락되었을 수 있습니다.

예 :

Where Id = 1 

는 자동적으로 당신을 위해이 문제를 해결하는 매개 변수가있는 쿼리를 사용

Where Id= '1' 

와 동일하지 않습니다.

관련 문제