我正在设计一个登记表。 以下是我的代码: 但是在我这样做之后,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
答案 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语句的存储过程,然后使用参数将值传递给它。网络上到处都是关于如何执行此操作的教程。你会发现一个很容易。
祝你好运!