【问题标题】:asp.net (web forms with VB.Net) connecting to a sql databaseasp.net(带有 VB.Net 的 Web 表单)连接到 sql 数据库
【发布时间】:2011-06-26 21:14:33
【问题描述】:

我正在尝试在 VB.net 中编写一个方法,以便当我单击一个按钮时,它会查询数据库并返回与按钮旁边的文本框匹配的所有值。我不知道该怎么做,我假设在按钮的 onclick 方法中我需要从文本框中提取值,连接到数据库并将结果显示到 gridview?

非常感谢任何帮助。

谢谢:)

马克

【问题讨论】:

    标签: asp.net vb.net webforms onclick


    【解决方案1】:

    免责声明:此代码容易受到 SQL 注入攻击,不应在生产环境中使用。仅用于测试。具体来说:

    strSQL = "SELECT * from Table where charindex ('" & TextBox1.Text & "', columnname) > 0 "
    

    首先在 web.config 中添加指向您的数据库的这个部分:

    <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    </connectionStrings>
    

    例如,我刚刚使用了在 VisualStudio 2010 中启动新的 vb.net Web 应用程序时附加的标准数据库。

    然后在你的 Default.aspx 中,有这样的东西:

    <asp:TextBox runat="server" ID="TextBox1"></asp:TextBox>
    <asp:Button runat="server" Text="Button" ID="Button1" />
    

    在后面的代码中你可以这样做:

    Imports System.Data.SqlClient
    

    公共类_默认 继承 System.Web.UI.Page

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strSQL As String = String.Empty
    
        ' Define your select statement
        strSQL = "SELECT * from Table where charindex ('" & TextBox1.Text & "', columnname) > 0 "
        ' Fire up SQLConnection with a DataReader
        Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("ApplicationServices").ConnectionString)
            Dim command As New SqlCommand(strSQL, connection)
            connection.Open()
            Dim reader As SqlDataReader = command.ExecuteReader()
    
            While reader.Read()
                Try
                    ' Do some magic with reader.GetValue()
                Catch ex As Exception
                End Try
            End While
    
            reader.Close()
            connection.Close()
        End Using
    End Sub
    

    结束类

    当然,在将 textbox.text 直接放入 select 语句之前,您必须对其进行验证,但这样就可以解决问题。

    'CharIndex' 将遍历指定为第二个参数的列,并检查列数据和 textbox.text 之间是否匹配,如果匹配则返回该行。

    阅读器将遍历结果,并使用 reader.GetValue 检索数据并施展你的魔法。

    您当然可以将它附加到数据绑定网格或其他东西上,而不是使用 SQLDataReader...

    【讨论】:

    • 天啊...请在此答案的顶部添加免责声明,说明“不要在生产环境中这样做”。虽然这是一个简单的问题答案,并且可能足以满足演示、POC 或学校项目的需要,但如果 lazell 想要一个生产就绪的解决方案,这不是一个很好的答案。我认为其他人会同意将 SQL 包含在您的 aspx 代码后面通常是不好的编码实践,甚至更糟糕的做法是允许内联注入 SQL 代码。不过,就像我说的那样,它回答了这个问题......
    • 冷静点...当然只是演示,重点是展示CharIndex函数。如果有人有心情输入一个更好的例子,请随意:)
    • 但这就是糟糕的代码在生产环境中的表现。听说过“破窗户”吗?
    • +1 我认为这几乎是 OP 所要求的。考虑到问题的基本性质以及他们似乎没有进行任何真正的数据库开发的事实,我建议这无论如何都适用于生产环境。
    • 这绝对不适合生产环境。这是一个学校项目,所以不要担心人们!
    【解决方案2】:

    两个“最佳”选项是使用表适配器或实体框架。

    这两个选项都会为您提供一个 GUI 界面来构建连接和后端数据库查询。实体框架是两者中较新的技术。如果您不确定,表适配器可能更容易学习/理解。 (现在“简单”的 cmets)

    我会给出代码示例,但您必须了解其中任何一个的一些基础知识才能使它们有意义。任一链接中的基本示例应该足以满足您的需要。

    这两个选项都可以让您将数据网格数据绑定到结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-13
      • 2022-11-26
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多