2012-11-23 53 views
0

我遇到了我的sql查詢問題。從Sql讀取列並填充到列表框

SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = "Data Source=.\\SQLExpress;" + "Trusted_Connection=True;" + "User Instance=True;" + "AttachDbFilename=|DataDirectory|\\fbi.mdf;"; 
     string sqlQuery4 = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'"; 
     SqlCommand cmd4 = new SqlCommand(sqlQuery4, conn); 
     conn.Open(); 
     SqlDataReader rd = cmd4.ExecuteReader(); 
     rd.Read(); 
     ddl1.Items.Add(rd.GetValue(0).ToString()); 
     conn.Close(); 

所以它應該返回屬於鮑勃的tbl1的所有車輛。查詢只返回一個字符串,並將其放入Listbox「ddl1」,而它應該返回至少3個。 任何想法?

回答

3

您通過閱讀器需要循環:

while (rd.Read()){ 
    ddl1.Items.Add(rd.GetValue(0).ToString()); 
} 
+0

它越來越近,但還不完善。首先它首先返回(3的1)車。現在它只返回第三輛(3輛中的3輛)。所以它只發送一個字符串。我想我可能需要在這裏使用數組或數據表? – novak100

0

諾瓦克,不知道你的問題是與柯特的解決方案,因爲它是正確的。您的完整語句應該是這樣的:

string connectionString= "Data Source=.\\SQLExpress;Trusted_Connection=True;User Instance=True;AttachDbFilename=|DataDirectory|\\fbi.mdf;"; 
string query = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'"; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand command = new SqlCommand(query, connection)) 
    { 
     connection.Open(); 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       ddl1.Items.Add(reader.GetValue(0).ToString()); 
      } 
     } 
    } 
} 
+0

我的壞人。你們倆都是對的。這是我的錯誤。 我在代碼中撥打了兩次讀卡器: rd.Read(); (rd.Read()) { string car = rd.GetString(0); (car); ddl1.Items.Add(car);我的刪除行: rd.Read(); 它的工作正常。 感謝你們倆。 – novak100

+0

NP ...認爲在您的初次嘗試中可能只有額外的代碼。確保使用* using *語句,並且如果您開始使用用戶輸入作爲* username *值,請使用參數。 – MikeSmithDev

+0

是的,這裏的魔法就是從這裏開始的:我想從「asp:LoginView」中獲取輸入信息,這取決於當前登錄的用戶,將顯示不同的汽車。但是,這是另一回事:) – novak100

0

試試下面的代碼:

SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = "Data Source=.\\SQLExpress;" + "Trusted_Connection=True;" + "User Instance=True;" + "AttachDbFilename=|DataDirectory|\\fbi.mdf;"; 
     string sqlQuery4 = "SELECT Car FROM tbl1 JOIN tbl2 ON (tbl1.userID = tbl2.userID) WHERE tbl2.username='Bob'"; 
     SqlCommand cmd4 = new SqlCommand(sqlQuery4, conn); 
     conn.Open(); 
     SqlDataReader rd = cmd4.ExecuteReader(); 


       ddl1.DataSource = rd; 
       ddl1..DataTextField = "columnname"; //your column name 
       ddl1.DataValueField = "columnname"; 
       ddl1.DataBind(); 

       rd.Close(); 
       conn.Close();