2017-12-03 199 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次。也感谢您的参考和建议。非常感谢您的帮助。 –

相关问题