ASP.NET(VB)如何将textbox.text插入SQL数据库?

时间:2014-12-03 15:32:10

标签: sql asp.net vb.net

我正在设计一个登记表。 以下是我的代码: 但是在我这样做之后,SQL表显示不是用户的数据....? 数据库表格显示& username&,& password& (用户名,密码...是文本框名称)

Protected Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click       
        Dim Conn As SqlConnection = New SqlConnection(".....")
        Conn.Open()
        Dim sqlstr As String = "Insert Into user_profile(username,password,nickname,realname,email) Values('" & username.Text & "','" & password.Text & "','" & nickname.Text & "','" & realname.Text & "','" & email.Text & "')"
        Dim cmd As New SqlCommand(sqlstr, Conn)
        cmd.ExecuteNonQuery()

        cmd.Cancel()
        Conn.Close()
        Conn.Dispose()

    End Sub

1 个答案:

答案 0 :(得分:0)

好的,首先,我会抓住你的问题。然后,我们需要讨论SQL注入。

试试这个:

Dim MyValues as String = String.Format("'{0}', '{1}', '{2}', '{3}', '{4}'", username.Text, password.Text, nickname.Text, realname.Text, email.Text )

Dim sqlstr As String = "Insert Into user_profile(username,password,nickname,realname,email) Values(MyValues)"

(我没有测试过该代码。请注意语法错误。)

现在,据说,你了解你试图这样做的危险是很重要的。这里的严重问题是您对SQL注入攻击持开放态度。谷歌一下。但简而言之,使用这种方法,有人可以将“drop table”等命令放入文本框中,这些命令将在您的数据库中执行。

执行此操作的正确方法是创建包含INSERT语句的存储过程,然后使用参数将值传递给它。网络上到处都是关于如何执行此操作的教程。你会发现一个很容易。

祝你好运!