我想使用类从组合表中的客户表中添加所有ID,这是我的连接类connectionClass,在其中我做了一个从数据库选择数据的功能。 第二个是我的客户表单(这是客户表单编码customerForm),其中我调用了在连接类中创建的函数。 但它只显示客户表单中的最后一个ID,我想在组合框中显示所有ID
答案 0 :(得分:0)
在select()方法中,您将返回一个字符串,而不是您需要填充的字符串 数据集并将数据绑定到组合框。
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("customerid", typeof(string));
dt.Columns.Add("contactname", typeof(string));
dt.Load(reader);
致谢 钱德拉
答案 1 :(得分:0)
返回string
而不是List of strings
如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Fill_Combo();
}
public void Fill_Combo()
{
Connection2DB cst = new Connection2DB();
cmbBoxId.Items.AddRange(cst.Select().ToArray());
}
}
class Connection2DB
{
public List<string> Select()
{
var ids = new List<string>();
try
{
string sqlqry = "select ID from Customer";
SqlCommand cmds = new SqlCommand(sqlqry, _con);
SqlDataReader dr = cmds.ExecuteReader();
while (dr.Read())
{
ids.Add(dr["ID"].ToString());
}
}
catch (Exception ex)
{
// Handle exception here
}
return ids;
}
}
答案 2 :(得分:0)
此函数仅返回“客户”表中的ID。我想使用相同的方法从客户表中获取多个数据。您能帮我吗?
通常,这不是本网站的工作方式。首先,您应该问一个特定的问题,并展示您所做的事情。那我们可以为您服务。
在这里,我将尝试为您提供两种使用数据库的常规解决方案。
解决方案1:
让我们说您想将从数据库检索到的所有内容显示到Windows窗体中。
首先,创建DataGridView
对象,我们将其称为dataGridView1
。您可以使用设计器将其创建为其他任何控件。然后使用以下代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.DataSource = GetData();
}
public DataTable GetData()
{
string ConStr = " your connection string "; // Write here your connection string
string query = @"SELECT * FROM Customer"; // or write your specific query
DataTable dataTable = new DataTable();
SqlConnection conn = new SqlConnection(ConStr);
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataAdapter da = null;
try
{
conn.Open();
// create data adapter
da = new SqlDataAdapter(cmd);
// this will query your database and return the result to your datatable
da.Fill(dataTable);
}
catch (Exception ex)
{
MessageBox.Show($"Cannot read database: {ex.Message}");
}
finally
{
conn.Close();
if (da != null)
da.Dispose();
}
return dataTable;
}
public void FillDataGrid()
{
Connection2DB cst = new Connection2DB();
dataGridView1.DataSource = cst.GetData();
}
}
解决方案2:
比方说,您要从数据库表中提取3列:ID (INT)
,Name (VARCHAR(100))
和Value (VARCHAR(MAX)
。
首先,创建一个类:
public class Customer
{
public int ID { get; set; }
public string Nmae { get; set; }
public string Value { get; set; }
}
创建返回客户列表的函数:
public List<Customer> GetCustomers()
{
var customers = new List<Customer>();
try
{
string sqlqry = "SELECT ID, Name, Value FROM Customer";
SqlCommand cmds = new SqlCommand(sqlqry, _con); // here _con is your predefined SqlConnection object
SqlDataReader dr = cmds.ExecuteReader();
while (dr.Read())
{
customers.Add(new Customer
{
ID = (int)dr["ID"],
Nmae = dr["Name"].ToString(),
Value = dr["Value"].ToString(),
});
}
}
catch (Exception ex)
{
// Handle exception here
}
return customers;
}
然后,您可以根据需要使用此数据。例如,要用ID填充ComboBox
,可以使用以下代码:
public void Fill_Combo()
{
var customers = GetCustomers();
var ids = customers.Select(x => x.ID.ToString());
cmbBoxId.Items.AddRange(ids.ToArray());
}