我正在尝试从数据库中的列中获取所有数据。我找到了如何从特定列读取数据,但它只显示了第一个值。
这是我的一些代码。知道如何阅读和显示列中的其余数据吗?
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();
答案 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
此外,您似乎正在交换DisplayMember
和ValueMember
。他们应该是:
listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Ip";
这可以显示列表中Ip
列的所有数据。您似乎也希望显示其他列中的数据。 ListBox
控件不是最佳控件,您应该考虑使用GridView
控件。但是,有时我们并不关心以网格格式显示数据,我们所关心的只是在每个项目中将其显示为连接字符串(例如firstname + " " lastname
)。如果是这种情况,您可以连接查询或代码中的列。我们假设您的表格中包含以下列:
让我们假设您要像111.111.111 AT&T (Virginia)
一样显示它们,然后您可以将查询更改为:
SELECT Id, Ip + ' ' + Provider + ' (' + Location + ')' AS Description FROM IP_table
现在您可以将绑定属性更改为:
listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Description";