搜索和删除文本文件中的数据

时间:2015-09-02 17:57:36

标签: vb.net datagridview text-files vb.net-2010

我目前正在开发图书馆库存系统。我希望它能够添加,发布,搜索和删除书籍记录。记录存储在一个文本文件中,如下所示:

  

(身份证),(书名); (作者); (价钱) ; (预定捐助者); (语言)

E.g。

  123,地球中心之旅;儒勒·凡尔纳 ; 50;杰克;英语
  ...

此程序也可以与datagridview一起使用来更新文本文件或从文本文件更新,到目前为止,我的添加和发布功能正在运行,但我在搜索和删除方面遇到了麻烦。

要进行搜索,用户必须在文本框中输入图书的ID或书籍的语言(单独的文本框),并且必须在datagridview中显示搜索结果。

这是我对搜索功能的尝试:

    Dim line As String
    Dim fields(7) As String
    Dim found As Boolean = False
    Dim inputStream As StreamReader


    inputStream = File.OpenText("AddBookScreen.txt")
    line = inputStream.ReadLine()

    While (line <> Nothing) And found = False
        fields = Split(line, ",")
        If Trim(fields(0)) = SBidTextbox.Text Then
            SBdatagridview.Rows.Add(Trim(fields(1)), Trim(fields(2)), Trim(fields(3)), Trim(fields(4)), Trim(fields(5)), Trim(fields(6)))
            found = True
        Else
            line = inputStream.ReadLine()
        End If
    End While
    If Not found Then
        MessageBox.Show(SBidTextbox.Text & " not found")

    End If
    inputStream.Close()
End Sub

删除功能应该能够通过id找到特定的书籍,然后从文本文件中删除该记录。

这是我尝试删除功能:

    Dim lines() As String
    Dim outputlines As New List(Of String)
    Dim searchString As String = DBidTextbox.Text
    lines = IO.File.ReadAllLines("AddBookScreen.txt")

    For Each line As String In lines
        If line.Contains(searchString) = False Then
            outputlines.Add(line)
        End If
    Next

搜索和删除方法用于通过书籍ID或语言在文本文件中搜索特定书籍,并在datagridview中显示结果,delete方法是通过ID搜索特定记录并删除该记录。

有人可以指导我解决这些问题,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您可以稍微更改文本文件格式(仅使用一种分隔符 - 逗号或分号),则可以使用Microsoft文本驱动程序。这允许您将文本文件视为数据库表,并且可以使用SQL语句进行SELECT,DELETE或UPDATE。以下是一个例子:

Public Sub Delete(ByVal ID As String)
    Dim SQL As String = String.Format("DELETE FROM myfile.csv WHERE ID={0}", ID)
    Dim conn_str As String = String.Format("Driver={{Microsoft Text Driver (*.txt; *.csv)}};Dbq={0};Extensions=asc,csv,tab,tsv,txt;", folder)
    Dim conn As New OdbcConnection(conn_str)
    conn.Open()
    Dim cmd As New OdbcCommand(sqltxt, conn)
    Dim reader As OdbcDataReader = cmd.ExecuteNonQuery()

    ...

End Sub

如果此系统有任何面向公众的用户输入,我肯定会建议使用Parameterized Query来防止SQL注入攻击。