从数据集的数据表中读取值

本文关键字:读取 数据表 数据集 | 更新日期: 2023-09-27 18:18:28

我想在文本框的值之后搜索数据表的列。我想搜索ISBN-Numbers

这是我的Table "Book":

DataColumn bookName = new DataColumn("BookName", typeof(string));
DataColumn bookId = new DataColumn("BookId", typeof(int));
DataColumn isbn = new DataColumn("ISBN", typeof(string)); //should be an EAN-13
 Barcodeenter code here
DataColumn book_authorId = new DataColumn("Book_AuthorId", typeof(int));
DataColumn bookprice = new DataColumn("Price", typeof(decimal));
DataColumn authorName = new DataColumn("AuthorName", typeof(string));
DataColumn authorId = new DataColumn("AuthorId", typeof(int));
DataColumn geschlecht = new DataColumn("Geschlecht", typeof(string));

现在,我如何才能只搜索isbn,而不从整个表中获取值呢?在一个列表框中,我想要输出。在这里,我想要拥有所有来自图书的值,其中ISBN号包含文本框中的文本。

我现在要搜索的isbn如下:

  string isbn = _tbIsbnSuche.Text;
            string result = String.Empty;
            string file = _tempPath + @"'book_authorData.xml";
            XmlTextReader r = new XmlTextReader(file);
            if (isbn != String.Empty)
            {
                _lbInformation.Text = String.Empty;
                _lBdatenOutput.BackColor = Color.LightGoldenrodYellow;
                _lBdatenOutput.Items.Clear();
                _lBdatenOutput.Items.Insert(0, "Please Wait!");
                _lBdatenOutput.Items.Insert(1, "Gefundene ISBN-Nummern:");
                while (r.Read())
                {
                    if (r.Value.Trim().IndexOf(isbn) != -1 && r.Value.Trim().Contains("-") && r.Value.Length >= 13)
                    {
                        _lBdatenOutput.Items.Add(r.Value.Trim());
                    }
                }
                tim.Enabled = true;
            }
            else
            {
                _lbInformation.ForeColor = Color.Red;
                _lbInformation.Text = _suchfehler;
            }
            //Wenn keine Datensätze gefunden wurden
            if (_lBdatenOutput.Items.Count == 2)
            {
                tim.Enabled = true;
                _lBdatenOutput.BackColor = Color.OldLace;
                _lBdatenOutput.Items.Add(String.Concat("Es wurden keine Bücher welche in der ISBN-Nummer die Zeichenfolge ", "'"", isbn, "'"", " enthalten gefunden"));
            }

但这搜索所有的数据集,当我有一个值在另一个字段与搜索字符串相同,它也出现在搜索结果。

从数据集的数据表中读取值

您可以通过名称访问DataRow的列,例如row["ISBN"]

嘿,伙计们,我找到了一个解决方案。这个解决方案可能比需要的更复杂,但我找不到其他的解决方案。几个小时后,我得到了以下代码:

string _seperator1 = "-------------------------------------------------------------------------------------------------------------------------------- 'n"; 
string isbn = _tbIsbnSuche.Text;
DataView custView = new DataView(_dset.Tables["Book"], "", "ISBN", DataViewRowState.CurrentRows);
{
    _lBdatenOutput.Items.Clear(); //Delete existing Objects from the Output
    foreach (DataRowView myDRV in custView)
    {
        DataRow dr = myDRV.Row;
        if((dr["ISBN"].ToString().IndexOf(isbn) >= 0))
        {
            foreach (DataColumn cl in custView.Table.Columns)
            {
                _lBdatenOutput.Items.Add("Spalten-Name:  " + " 't " + cl.ColumnName + " 't" + dr[cl]);
            }
            _lBdatenOutput.Items.Add(_seperator1); //Insert a seperator
        }
    }
}

我希望我能帮到一些人。