我正在设计一个注册表单。以下是我的代码:但是在我这样做之后,那么SQL表显示的不是用户的数据....?数据库表显示 &用户名, &密码(用户名、密码...是文本框名称)
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
好的,首先,我会试一试你的问题。 然后,我们需要讨论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注入攻击敞开大门。 谷歌一下。 但简而言之,使用这种方法,有人可以将诸如"删除表"之类的命令放入您的文本框中,这些命令将在您的数据库中执行。
执行此操作的正确方法是创建一个包含 INSERT 语句的存储过程,然后使用参数将值传递给它。 网络上充斥着有关如何执行此操作的教程。 你会发现一个足够容易。
祝你好运!