Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据库字段名及其值添加到列表框中,并在C#中留有空格?_C#_Ms Access_Listbox - Fatal编程技术网

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

如何将数据库字段名及其值添加到列表框中,并在C#中留有空格?,c#,ms-access,listbox,C#,Ms Access,Listbox,预先:在Windows窗体中创建项目。 在C#中,我试图创建一个应用程序,在列表框中列出一些数据库值,但我正在寻找一种更好的方法,将两个数据库值(字段名及其值)添加到列表框中,并在它们之间留有间距。我将在下面进一步解释 我在Lisbox中显示的值来自Access数据库,并且是a。特定数据库表和b的字段名。这些字段的值。 列表框如下所示: 列表框左侧的名称是数据库表的字段名。这些将在加载列表框时插入到列表框中。正确的值是(使用读取器)从数据库中获取的那些字段的匹配值 下面是列出这些值和字段名的代

预先:在Windows窗体中创建项目。

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

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

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

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

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());                   
}
正如您在代码中所看到的,当从数据库检索字段名值时,数据库字段名被手动添加到列表框(“字段名”)。我还手动添加了间距(PadLeft)以正确勾勒出值,并添加了欧元符号

到目前为止还不错

然而,问题在于:用户还应该能够使用C#code手动向数据库表中添加一个新字段名(参见图片中的Voeg veld toe=add字段),但是当有人手动添加一个新字段时,该字段名不能像其他字段一样自动添加到列表框中(默认)因为我事先不知道要添加哪些字段名,需要多少间距,等等

我曾考虑在每只水獭旁边设置两个列表框,这样我可以更好地控制间距、命名等,但这看起来不太新奇(我喜欢在列表框中选择整行的方式)

因此,问题是:我如何/应该修改代码,以便更容易将自定义数据库字段名添加到我的列表框中,并具有良好的大纲(间距)?
甚至可以用读取器读出数据库字段名及其值吗


提前谢谢

我假设字段名称和值存在于Access DB的同一个表中。如果这是真的,那么您所要做的就是更改获取值的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; 
}

非常感谢。必须进行一些修改,但效果很好!
string query="Select FieldName.tableA,FieldValue.tableB from tableA join tableB on tableA.CommonField=tableB.CommonField";