【问题标题】:SQL To Text BoxSQL 到文本框
【发布时间】:2014-02-24 13:50:27
【问题描述】:

很简单,我试图从 SQL 数据库中的列中提取信息,其中成员 ID 等于用户输入到文本框的整数。

  • SendFromID.Text 是包含 Members_ID 的文本框

  • Current_Points 是我要保存/显示 SQL 列信息的文本框

  • U_G_Studio 是保存数据的 SQL 列

只有 1 行可以匹配 Members_ID,因为它是主键。

这是我的代码所能做到的;在此之后,我迷路了。如果您能提供代码中的示例,我将不胜感激。

stcon = "CONNECTION STRING;"
        con = New SqlConnection(stcon)

        con.Open()

        Dim cmd As New SqlCommand("SELECT U_G_Studio FROM PersonsA WHERE Members_ID ='" & SendFromID.Text & "'", con)
        cmd.CommandType = CommandType.Text

{编辑 1}

只是想澄清一下,我需要将数据 SQL 列下载到 texbox。

【问题讨论】:

  • 删除SendFromID.Text 中的引号。也可以使用参数。
  • 这样很容易发生Sql Injection。 xkcd.com/327请使用参数化查询或存储过程。
  • 这是供个人使用的,该程序受众多密码保护。 SQL 注入不是问题,无论如何,谢谢。
  • SQL 注入应该始终成为一个问题。就像您在车上总是系好安全带一样,即使是在最短的行程中,在访问数据库时也应该始终做正确的事情。

标签: sql sql-server vb.net vba


【解决方案1】:

试试这样的。 Using 自动负责处理资源。还要参数化您的查询以避免 sql 注入攻击。

stcon = "CONNECTION STRING;"
Dim strUGStudio As String

Dim sql As String = _
"SELECT U_G_Studio FROM PersonsA WHERE Members_ID = @MemberId"

Using conn As New SqlConnection(stcon)
    Dim cmd As New SqlCommand(sql, conn)
    cmd.Parameters.AddWithValue("@MemberId", SendFromID.Text)
    Try
        conn.Open()
        strUGStudio = Convert.ToString(cmd.ExecuteScalar())
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try 
End Using 

Return strUGStudio 

【讨论】:

    【解决方案2】:

    使用这个:

    Dim cmd As New SqlCommand("SELECT U_G_Studio FROM PersonsA WHERE Members_ID = @id")
    cmd.Parameters.AddWithValue("@id", SendFromID.Text)
    

    【讨论】:

      【解决方案3】:

      然后您需要执行 ExecuteScalar(),将其分配给一个变量,并将其显示在文本框中。

      【讨论】:

        【解决方案4】:

        如果成员 ID 是整数,那么您应该尝试

        Dim cmd As New SqlCommand("SELECT U_G_Studio FROM PersonsA WHERE Members_ID =" &  SendFromID.Text , con)
        

        【讨论】:

          【解决方案5】:

          我最终得到了这段代码:

          stcon = "CONNECTION STRING"
                  con = New SqlConnection(stcon)
          
                  da = New SqlDataAdapter("SELECT U_G_Studio FROM PersonsA WHERE Members_ID =" & SendFromID.Text, con)
                  Dim dt = New DataTable
          
                  da.Fill(dt)
          
                      CurrentPoints.Text = dt.Rows(0)("U_G_Studio").ToString()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-26
            • 1970-01-01
            • 1970-01-01
            • 2012-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多