【问题标题】:visual studio 2010 searching using textboxVisual Studio 2010 使用文本框搜索
【发布时间】:2015-02-23 09:44:46
【问题描述】:

当我在文本框搜索中输入字母时出现错误我该怎么办?

 Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtsearch.TextChanged
        Dim SqlQuery As String = "SELECT * FROM tblsample WHERE fName LIKE '%" & Txtsearch.Text & "%' "

        Dim SqlCommand As New OleDb.OleDbCommand

        Dim SqlAdpter As New OleDb.OleDbDataAdapter

        Dim TABLE As New DataTable

        With SqlCommand
            .CommandText = SqlQuery
            .Connection = conn

        End With

        With SqlAdpter
            .SelectCommand = SqlCommand
            .Fill(TABLE)
        End With

        lvw.Items.Clear()
        For i = 0 To TABLE.Rows.Count - 1
            With lvw
                .Items.Add(TABLE.Rows(i)("uid"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(TABLE.Rows(i)("fname"))
                    .Add(TABLE.Rows(i)("lname"))
                    .Add(TABLE.Rows(i)("me"))
                End With
            End With
        Next
    End Sub
End Class

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtsearch.TextChanged
    Dim SqlQuery As String = "SELECT * FROM tblsample WHERE fName LIKE '%" & Txtsearch.Text & "%' "

    Dim SqlCommand As New OleDb.OleDbCommand

    Dim SqlAdpter As New OleDb.OleDbDataAdapter

    Dim TABLE As New DataTable

    With SqlCommand
        .CommandText = SqlQuery
        .Connection = conn

    End With

    With SqlAdpter
        .SelectCommand = SqlCommand
        .Fill(TABLE)
    End With

    lvw.Items.Clear()
    For i = 0 To TABLE.Rows.Count - 1
        With lvw
            .Items.Add(TABLE.Rows(i)("uid"))
            With .Items(.Items.Count - 1).SubItems
                .Add(TABLE.Rows(i)("fname"))
                .Add(TABLE.Rows(i)("lname"))
                .Add(TABLE.Rows(i)("me"))
            End With
        End With
    Next
End Sub

【问题讨论】:

  • 说得到错误而不说错误是什么不是很有帮助。请添加收到的错误消息。
  • 对不起,这是错误----->>.Fill(TABLE) ConnectionString 属性尚未初始化。
  • 这是非常基本的。当您想要连接到数据库时,您可以使用 DbConnection 派生类的实例。此类需要帮助定位数据库的基本属性。它被称为连接字符串。变量 con 没有 ConnectionString,如果没有该属性,您将无法连接到任何东西。 See this site for examples of ConnectionStrings
  • 我已经将它连接到数据库中..我的表单用于添加、编辑、删除,但搜索框是我的问题。当我运行程序时,除了 textboxsearch,我在填充表中遇到错误

标签: sql-server vb.net visual-studio-2010


【解决方案1】:

错误很明显。 conn 全局变量没有设置 ConnectionString。为什么要保留全局连接对象?而是将带有 ConnectionString 属性的字符串保留为全局或每次从您的配置文件中读取它。然后就地搭建SqlConnection,用完后立即销毁。

ADO.NET 实现了连接池基础结构,并且为连接保留一个全局对象是一种不好的做法。

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtsearch.TextChanged

   Dim SqlQuery As String = "SELECT * FROM tblsample " & _ 
                            "WHERE fName LIKE @search"
   Dim cnString as String = GetConnectionString()
   Using conn = new SqlConnection(cnString)    
   Using cmd = New OleDb.OleDbCommand(SqlQuery, conn)
   Using SqlAdpter = New OleDb.OleDbDataAdapter()
        Dim TABLE As New DataTable
        cmd.Parameters.Add("@search", _
            SqlDbType.NVarChar, 255).Value = "%" & Txtsearch.Text & "%"
        With SqlAdpter
            .SelectCommand = SqlCommand
            .Fill(TABLE)
        End With
   End Using
   End Using
   End Using

    lvw.Items.Clear()
    For i = 0 To TABLE.Rows.Count - 1
        With lvw
            .Items.Add(TABLE.Rows(i)("uid"))
            With .Items(.Items.Count - 1).SubItems
                .Add(TABLE.Rows(i)("fname"))
                .Add(TABLE.Rows(i)("lname"))
                .Add(TABLE.Rows(i)("me"))
            End With
        End With
    Next
End Sub

在上面的示例中,所有与数据库一起使用的变量都是本地的,在本地创建并在退出子之前销毁。唯一需要定义的部分是对 GetConnectionString 的调用。这应该是您的代码中的一个函数,它返回用于 SqlConnection 的 ConnectionString,您可以通过多种方式准备它(固定文本(不推荐),阅读您的 web.Config 或 App.Config(推荐))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2023-03-10
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多