如何自动从ListBox读取新数据?

时间:2018-03-15 15:26:37

标签: c# sql .net winforms

我正在尝试从数据库中的列中获取所有数据。我找到了如何从特定列读取数据,但它只显示了第一个值。

这是我的一些代码。知道如何阅读和显示列中的其余数据吗?

public partial class main : Form
{
    //Connect database
    String connectionstring;
    SqlConnection connection;
    public main()
    {
        InitializeComponent();
        //Connect database
        connectionstring = ConfigurationManager.ConnectionStrings["Internet_Recovery.Properties.Settings.customerConnectionString"].ConnectionString;
        Run();
    }

    private void Run()
    {
        using (connection = new SqlConnection(connectionstring))

        //Select ip values from IP_table
        using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT Ip FROM IP_table  ", connection))
        {
            DataTable iptable = new DataTable();
            //Read ip value and add it in the listbox1
            adapter.Fill(iptable);
            listBox1.DataSource = iptable;
            listBox1.ValueMember = "Ip";
            listBox1.DisplayMember = "Id";
            String num;
            num = listBox1.SelectedValue.ToString();

2 个答案:

答案 0 :(得分:0)

你可以这样做:

DataSet data = new DataSet();
String num;

using (SqlConnection connection = new SqlConnection(connectionstring))
{
    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT Ip FROM IP_table", connection))
    {
        connection.Open();                          
        adapter.Fill(data);

        listBox1.DataSource = data.Tables[0];
        listBox1.DisplayMember = "Ip";
    }
}

num = listBox1.SelectedValue.ToString();        

答案 1 :(得分:0)

首先,您的数据没有Id字段,您尝试将DisplayMember绑定到该字段。将您的查询更改为

SELECT Id, Ip FROM IP_table

此外,您似乎正在交换DisplayMemberValueMember。他们应该是:

listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Ip";

这可以显示列表中Ip列的所有数据。您似乎也希望显示其他列中的数据。 ListBox控件不是最佳控件,您应该考虑使用GridView控件。但是,有时我们并不关心以网格格式显示数据,我们所关心的只是在每个项目中将其显示为连接字符串(例如firstname + " " lastname)。如果是这种情况,您可以连接查询或代码中的列。我们假设您的表格中包含以下列:

  • Id(例如1)
  • Ip(例如111.111.111)
  • 位置(例如弗吉尼亚州)
  • 提供商(例如AT& T)

让我们假设您要像111.111.111 AT&T (Virginia)一样显示它们,然后您可以将查询更改为:

SELECT Id, Ip + ' ' + Provider + ' (' + Location + ')' AS Description FROM IP_table

现在您可以将绑定属性更改为:

listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Description";