将数据库数据插入列表框C#

时间:2017-12-03 04:25:47

标签: c# sql-server listbox

免责声明:我以前没有从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上。

1 个答案:

答案 0 :(得分:3)

问题来自你所做的事情:

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

这是错误的,因为您正在将SqlCommand对象转换为字符串并将其放入字符串类型的数组中以从SqlCommand中检索数据。

如下更改以上行将解决您的问题:

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

有关在c#中使用数据库的任何提示吗?

对于使用C#和SQL的初学者,我建议你继续学习ADO.net的基本数据库访问工具,比如使用SqlDataReader,SqlDataReader,SqlDataAdapter,....但要拥有专业,当然还有安全应用,女巫也需要简单;你必须转向使用ORM工具(安全地访问数据库),例如“实体框架”,linq,...女巫会更方便地与数据库交谈。

<强>补充:

我建议您阅读有关如何使用SqlDataReader的this教程。