2017-12-08 4 views
-8

SQL에서 문자열 목록에 데이터를 추가하려고하지만 내 문자열 목록 = null이라는 saynig를 유지합니다. 버튼에SQL에서 읽는 문자열 목록에 값을 넣지 않습니다

코드 :

protected void Button2_Click(object sender, EventArgs e) 
     { 
      // go back to the menu 
     } 
     protected void Button3_Click(object sender, EventArgs e) 
     { 
      // code to display the books by sanctuary 
      ListBox1.Items.Clear(); 
      List<String> s = DBConnectivity.LoadBooksBySanctuary2(3/*int.Parse(DDSanctuary.SelectedValue)*/); 

      foreach (var detail in s) 
      { 
       ListBox1.Items.Add(detail); 
      } 




     } 

코드는 SQL에서 읽고 문자열 목록에 넣어. 나는 목록이 null로 돌아 오는 경우 그때 당신이 catch(Exception ex) 블록을 타격하고, 애완 동물

public static List<String> LoadPetsBySanctuary2(int sID) 
     { 
      List<String> saName = new List<String>(); 
      SqlConnection myConnection = GetConnection(); 
      // string myQuery = "SELECT Name, categId, cName FROM Book, Category WHERE Book.CategID=Category.ID AND Book.authorId = " + sID; 

      string myQuery = "SELECT Name FROM pet WHERE sanID = " + saName; 

      SqlCommand myCommand = new SqlCommand(myQuery, myConnection); 

      try 
      { 
       myConnection.Open(); 
       SqlDataReader myReader = myCommand.ExecuteReader(); 

       while (myReader.Read()) 
       { 
       // saName.Add(myReader["Name"].ToString()); 

        saName.Add(myReader["Name"].ToString()); 

       } 
       return saName; 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Exception in DBHandler", ex); 
       return null; 
      } 
      finally 
      { 
       myConnection.Close(); 
      } 
     } 
+0

이'DBConnectivity.LoadBooksBySanctuary2 (3/* int.Parse (DDSanctuary.SelectedValue) * /)'가능성'목록 을 반환하지 않습니다'(그래서 null 가능성이 높습니다) 그리고 아무런 응급실도 없습니다 ... – EpicKip

+0

'하지만 내 문자열 목록 = null이라는 것을 계속 유지합니다 .' ** 정확히 ** 그게 무엇입니까? ** 구체적으로 ** 무엇을 말 했나요? 그리고 그 원인 (즉, 어떤 라인)? – mjwills

+3

'sID' 매개 변수 대신'saName'을 쿼리에 전달합니다. 예외가 귀하의 쿼리가 고장 났다고 말해야합니다. – Filburt

답변

2

를 추가 할 수 있기 때문에 내 연결이 잘 작동 알고있다. 그것은 null을 반환하는 유일한 장소입니다. 힌트 : 는 삼키는 예외를 멈추십시오. 예외는 문제가 무엇인지 알려줍니다.

또한 매개 변수을 사용하십시오. 이렇게 입력하면 절대 추가 할 수 없습니다.

아마도 saName 대신 sId을 사용해야합니다.

나는 겸손 여기에 몇 가지 "단정"을 제안 할 수 있습니다 :

public static List<String> LoadPetsBySanctuary2(int sID) 
{ 
    return GetConnection().Query<string>(
     "SELECT Name FROM pet WHERE sanID = @sID", 
     new { sID }).AsList(); 
} 

참고 :이 GetConnection는 연결 여부의 소유권을 통과 여부를 명확하지 않다; 그것은 않는 경우, 당신은 using을 사용해야합니다

public static List<String> LoadPetsBySanctuary2(int sID) 
{ 
    using(var myConnection = GetConnection()) 
    { 
     return myConnection.Query<string>(
      "SELECT Name FROM pet WHERE sanID = @sID", 
      new { sID }).AsList(); 
    } 
} 
+0

대단히 고마워요! –