如何在 C# 中将数据库字段名称及其值添加到带有空格的列表框中?

How to add a database field name and its value to a listbox with spacing in between in C#?

之前:在 Windows 表单中创建项目。

在 C# 中,我试图创建一个在列表框中列出一些数据库值的应用程序,但我正在寻找一种更好的方法来将 2 个数据库值(字段名称及其值)添加到列表框中,并在它们之间留有间距。我将在下面进一步解释。

我在 Lisbox 中显示的值来自 Access 数据库,并且是 a.特定数据库的字段名称 table 和 b。这些字段的值。 列表框如下所示:

列表框左侧的名称是数据库的字段名称table。这些在列表框加载时插入到列表框中。正确的值是从数据库中获取的那些字段的匹配值(带有 reader)。

下面是列出这些值和字段名称的代码:

while (reader2.Read())
{

    listBox2.Items.Add("Boodschappen:" + "€ ".PadLeft(32) + reader2["Boodschappen"].ToString());
    listBox2.Items.Add("Woonverzekering:" + "€ ".PadLeft(28) + reader2["Woonkosten"].ToString());
    listBox2.Items.Add("Essent:" + "€ ".PadLeft(46) + reader2["Essent"].ToString());
    listBox2.Items.Add("Ziggo:" + "€ ".PadLeft(48) + reader2["Ziggo"].ToString());
    listBox2.Items.Add("Huur:" + "€ ".PadLeft(49) + reader2["Huur"].ToString());
    listBox2.Items.Add("Zorgverzekering Wendy:" + "€ ".PadLeft(18) + reader2["Zorgverzekering Wendy"].ToString());
    listBox2.Items.Add("Zorgverzekering Nicolas:" + "€ ".PadLeft(17) + reader2["Zorgverzekering Nicolas"].ToString());
    listBox2.Items.Add("Autoverzekering:" + "€ ".PadLeft(31) + reader2["Autoverzekering"].ToString());
    listBox2.Items.Add("Benzine:" + "€ ".PadLeft(44) + reader2["Benzine"].ToString());                   
}

如您在代码中所见,数据库字段名称是手动添加 ("field name") 到列表框的,而字段名称值是从数据库中检索的。我还手动添加了间距 (PadLeft) 以正确勾勒出值并添加了 € 符号。

到目前为止一切顺利。

但问题如下:用户还应该能够使用 C# 代码手动向数据库 table 添加新的字段名称(请参见图片中的 Voeg veld toe = 添加字段),但是当有人手动添加新字段时,字段名称不能像其他(默认)字段一样自动添加到列表框,因为我事先不知道要添加什么字段名称,需要多少间距等。

我考虑过在每个水獭旁边设置两个列表框,这样我就可以更好地控制间距、命名等,但这看起来不太花哨(我喜欢你的方式 select列表框中的一整行)。

所以问题是:我如何 can/should 修改我的代码,以便更容易地将自定义数据库字段名称添加到我的列表框并具有良好的大纲(间距)?
甚至可以读出带有 reader 的数据库字段名称及其值吗?

提前致谢!

我假设字段名称和值存在于您的 Access 数据库的同一个 table 中。如果是这样,那么您所要做的就是更改获取值的 select 查询,以获得对应的名称。示例:

private void UpdateListBox()
{
   List<string> myList=new List<string();
   listBox2.DataSource=null; //Clear existing binding;
   string query="Select FieldName,FieldValue from Mytable";
    int x=100; //Max padding
    using(OleDbCommand cmd = new OleDbCommand(query, Myconn))
            {
                conn.Open();
                OleDbDataReader reader = cmd.ExecuteReader();              
                while (readerr.Read())
                {
                   myList.Add(reader[0].ToString()+":" + "€"PadLeft(x-reader[0].ToString().Length) + reader[1].ToString());      
                }
            }
listBox2.Datasource=myList; 
}

每次更新 table 时都会调用上述函数。 (在您的表格上输入数据)。 如果字段名称和值在不同的 table 上,您只需要使用连接查询将它们放在同一个 select 语句中,例如:

string query="Select FieldName.tableA,FieldValue.tableB from tableA join tableB on tableA.CommonField=tableB.CommonField";