2017-12-03 178 views
1

免責聲明:我有一個從C#代碼查詢數據庫,沒有現成的經驗(這樣下去容易對我)插入數據庫中的數據到列表框C#

我想從我的SQL Server數據庫中的數據插入到我的列表框。現在我正在嘗試這個數組的形式。我首先連接到數據庫,然後將數據庫中的「狀態」插入到數組的索引中。我希望將所有50個州都放入我的數組中,然後將這些信息放入我的列表框中。現在,我的數據正在插入,但是當我在列表框中查看它時,它顯示System.Data.SqlClient.SqlCommand

public string connString = "Not displaying this for security reasons, it is set up correctly though."; //Setting up the connection to my DB 

public frmState() 
{ 
     InitializeComponent(); 

     this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmState_FormClosed); 

     using (SqlConnection dbConn = new SqlConnection(connString)) 
     { 
      dbConn.Open(); 
      string cmdString = "select State_Name from [State]"; 

      SqlCommand cmd = new SqlCommand(cmdString, dbConn); 

      SqlDataReader reader = cmd.ExecuteReader(); 

      try 
      { 
       while (reader.Read()) 
       { 
         string[] stateList = new string[50]; 

         for (int i = 1; i <= 50; i++) 
         { 
          stateList[i - 1] = cmd.ToString(); 
         } 

         for (int i = 0; i < stateList.Length; i++) 
         { 
          lbStates.Items.Add(stateList[i].ToString()); 
         } 
       } 
      } 
      finally 
      { 
       reader.Close(); 
      } 
     } 
    } 

而且,據我所知,截至目前我將展示50倍相同的狀態。我試圖找出如何一次插入一個狀態。這是否是一種有效的方式?另外,關於在C#中使用數據庫的技巧?我在Visual Studio的2017年和Microsoft SQL Server 2016

回答

3

的問題來自於你在哪裏:

stateList[i - 1] = cmd.ToString(); 

這是錯誤的,因爲你要轉換的SqlCommand對象的字符串,並把它類型的數組內的字符串來從您的SqlCommand中檢索數據。

改變上述線,下面將解決您的問題:

tateList[i - 1] = reader.GetString(0); 

任何提示在C#中的數據庫工作?

對於初學C#和SQL,我建議你不斷學習ADO.net的基本數據庫訪問工具,如使用SqlDataReader,SqlDataReader,SqlDataAdapter等。但要有專業和當然安全的應用女巫也需要簡單;你必須走向使用ORM工具(女巫是中等安全訪問數據庫),如「實體框架」,LINQ,...女巫將使數據庫交談更方便。

補充:

我建議你閱讀this教程有關如何使用SqlDataReader對象。

+0

我從來沒有回到你身邊,但這對我有用!只是爲了讓它工作起來,我只想調整一些東西,如果有人想知道,在做出更改之後,我還需要放棄我的for循環,否則我的列表框中全部有50個狀態,但它顯示每個狀態50次。也感謝您的參考和建議。非常感謝您的幫助。 –

相關問題