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# 使用access数据库将具有多个值的项从listbox显示到textbox_C#_Ms Access - Fatal编程技术网

C# 使用access数据库将具有多个值的项从listbox显示到textbox

C# 使用access数据库将具有多个值的项从listbox显示到textbox,c#,ms-access,C#,Ms Access,当在列表框中选择一个项目时,我试图在其各自的文本框中显示项目值 我是这样设置的: 这是将值显示到列表框的方式 command.CommandText = "select * from ItemsList"; OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { EditItemBrowserBox.Items.Add

当在列表框中选择一个项目时,我试图在其各自的文本框中显示项目值

我是这样设置的:

  • 这是将值显示到列表框的方式

            command.CommandText = "select * from ItemsList";
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                EditItemBrowserBox.Items.Add(reader["ID"].ToString() + "         " + reader["ItemBrand"].ToString() + "  " + reader["ItemName"].ToString() + "  " + reader["ItemType"].ToString() + "  " + reader["ItemPrice"].ToString());   
            }
    
  • 这就是我试图使列表框中的值显示为文本框的方式

            command.CommandText = "select * from ItemsList where ItemName='" + EditItemBrowserBox.Text + "' ";
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                EditIDTB.Text = reader["ID"].ToString();
                ItemNameAddTB.Text = reader["ItemName"].ToString();
                ItemTypeAddTB.Text = reader["ItemType"].ToString();
                ItemBrandAddTB.Text = reader["ItemBrand"].ToString();
                ItemPriceAddTB.Text = reader["ItemPrice"].ToString();
            }
    
  • EditItemBrowserBox是列表框,并且
    EditIDTB.Text=reader[“ID”].ToString()
    正在尝试在其中一个文本框中显示值


    现在,当我单击一个项目时,文本框中没有显示任何内容。感谢您的任何帮助

    有更好的方法来完成您正在做的事情,因此您可以利用
    DisplayMember
    ValueMember
    ,但您遇到的问题源于使用向用户显示的整个
    文本
    字段

    如果他们的选择是这样的:

    001     Acme  Anvil  Weapon  10.00
    
    然后,您的查询结果是:

    select * from ItemsList where ItemName='001     Acme  Anvil  Weapon  10.00'
    
    只需将您感兴趣的部分分开:

    var itemName =
        EditItemBrowserBox.Text.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries)[2];
    
    command.CommandText = $"select * from ItemsList where ItemName='{itemName}'";
    
    若要解决具有多个空格的项目名称的问题,您可能希望改为基于ID进行选择:

    var id = EditItemBrowserBox.Text.Split(' ')[0];
    
    command.CommandText = $"select * from ItemsList where ID='{id}'";
    

    您可能还想检查参数化查询,但这是另一个问题…

    那么我如何才能让它查找字符串中的值呢?非常感谢,但它只在ItemName为单个单词时起作用,但在ItemName中有两个单词时不起作用,当只有两个空格时,我确定要分开。我会仔细研究一下,谢谢,我希望我能投票给你,这样人们就可以看到:为了能够使用空格,你可以按ID而不是itemname排序