Dim con As SqlConnection
con = New SqlConnection("server=chinna; uid=sa; pwd=136018@h; database=icms")
con.Open()
Dim cmd As SqlCommand
cmd = New SqlCommand("select pass from personal where idno=" & TextBox1.Text, con)
cmd.CommandType = CommandType.Text
Dim rdr As SqlDataReader
rdr = cmd.ExecuteReader
If rdr.Read() Then
TextBox2.Text = rdr.ToString()
Response.Redirect("default.aspx")
Else
MsgBox("incorrect password")
答案 0 :(得分:4)
您需要在查询中使用参数:
cmd = New SqlCommand("select pass from personal where idno=@param", con)
cmd.Parameters.AddWithValue("param", TextBox1.Text);
答案 1 :(得分:3)
使用ExecuteScalar
代替ExecuteReader
。
Dim password As String
password = cmd.ExecuteScalar.ToString()
仅供参考,以纯文本格式存储密码并进行比较是非常糟糕的做法。您应该使用某种单向加密加密来加密密码,然后在验证时执行相同的操作,然后比较加密值。
答案 2 :(得分:1)
您缺少DataSource分配。
在调用DataBind之前添加GridView1.DataSource = rdr
。
您的If块应如下所示:
If rdr.Read() Then
GridView1.Visible = True
GridView1.DataSource = rdr
GridView1.DataBind()
End If
答案 3 :(得分:0)
应该是
cmd = New SqlCommand("select pass from personal where idno='" & TextBox1.Text & "'", con)
超出该代码似乎是ASP.net。我们无法在VB.net中执行可以出现在客户端浏览器上的MsgBox。
答案 4 :(得分:0)
在rdr上使用HasRows
并为GridView1设置DataSource
Dim rdr As SqlDataReader
rdr = cmd.ExecuteReader()
If rdr.HasRows Then
GridView1.Visible = True
GridView1.DataSource = rdr
GridView1.DataBind()
End If
答案 5 :(得分:0)
您的错误是什么,或者您只是为rdr获取null?
我没有看到一个outpout参数。您必须有一个。您只有一个输入参数。
答案 6 :(得分:0)
MsgBox(
在asp.net中无效,因为它会在服务器上显示消息,而不是在客户端上显示消息。尝试使用页面上的Label
通过设置文本来显示错误消息。