你的登陆是指登陆数据库登陆不了 还是执行程序反映登陆不了? 如果是数据库登录不了看看sql的配置工具 如果是sql执行查询结果登陆不了 断点到sql语句 复制到数据库执行看有没有错 或者打开数据库监听 看看执行了什么sql 看有没有结果 Dim cm As New SqlCommand("select * from userinfo where user=@user and pws=@pws", cn) cm.Parameters.Add("@user", SqlDbType.Char, 20) cm.Parameters.Add("@pws", SqlDbType.Char, 10) cm.Parameters("@user").Value = user cm.Parameters("@pws").Value = pws If cm.ExecuteScalar() <> Nothing Then Session.Add("user", User)你这样写参数进去了吗? 我没试过这样写 感觉你的@user和@pws参数没用,可能是我没这么用过吧
你User表里面的User字段为什么加方括号,去掉用下面的代码在运行一下,看看结果Imports System.Data Imports System.Data.SqlClient Partial Class Default2 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim connString = "data source=(local);initial catalog=bookdata;integrated security=sspi;" Dim sql As String = "SELECT COUNT(*) FROM userinfo WHERE user=@user AND pws=@pws" Dim user As String = Trim(TextBox1.Text) Dim pws As String = Trim(TextBox2.Text) Dim ret As Integer = 0
Using conn As New SqlConnection(connString) Dim cmd As New SqlCommand(sql, conn) cmd.Parameters.Add("@user", SqlDbType.Char, 20) cmd.Parameters.Add("@pws", SqlDbType.Char, 10) cmd.Parameters("@user").Value = user cmd.Parameters("@pws").Value = pws Try conn.Open() ret = Convert.ToInt32(cmd.ExecuteScalar()) Catch ex As Exception 'Console.WriteLine(ex.Message) End Try End Using
If ret > 0 Then Session.Add("user", User) Response.Redirect("login.aspx") Else Response.Write("<script>alert('登录失败!')</script>") TextBox1.Text = "" TextBox2.Text = "" TextBox1.Focus() End If
End Sub Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = "" TextBox2.Text = "" End Sub End Class
用vb.net语言创建的登录代码: Imports System.Data Imports System.Data.SqlClient Partial Class Default2 Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim userName As String = TextBox1.Text.Trim() Dim userPassword As String = TextBox2.Text.Trim() Dim sqlcon As String = System.Configuration.ConfigurationManager.ConnectionStrings("bookdataConnectionString").ToString() Dim sqlcomtext As String = "select * from userinfo where user='" + userName + "'and pws='" + userPassword + "'" Dim conn As SqlConnection = New SqlConnection(sqlcon) Try conn.Open() Dim sqlcom As SqlCommand = New SqlCommand(sqlcomtext, conn) If sqlcom.ExecuteScalar() <> Nothing Then Session.Add("login_name", userName) conn.Close() Response.Redirect("liuyan.aspx") Else Response.Write("<script>alert('登录失败!')</script>") End If If conn.State = ConnectionState.Open Then conn.Close() End If Catch ex As Exception End Try End Sub Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = "" TextBox2.Text = "" End Sub End Class 改成这样还不行,怎么回事啊???
cm.Parameters.Add("@user", SqlDbType.Char, 20)
cm.Parameters.Add("@pws", SqlDbType.Char, 10)
cm.Parameters("@user").Value = user
cm.Parameters("@pws").Value = pws
If cm.ExecuteScalar() <> Nothing Then
Session.Add("user", User)你这样写参数进去了吗? 我没试过这样写 感觉你的@user和@pws参数没用,可能是我没这么用过吧
这是我的登录界面和user表,填完点登陆按钮后,都是出现下来的那个框登录失败,到底是怎么回事啊???
Imports System.Data.SqlClient
Partial Class Default2
Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connString = "data source=(local);initial catalog=bookdata;integrated security=sspi;"
Dim sql As String = "SELECT COUNT(*) FROM userinfo WHERE user=@user AND pws=@pws"
Dim user As String = Trim(TextBox1.Text)
Dim pws As String = Trim(TextBox2.Text)
Dim ret As Integer = 0
Using conn As New SqlConnection(connString)
Dim cmd As New SqlCommand(sql, conn)
cmd.Parameters.Add("@user", SqlDbType.Char, 20)
cmd.Parameters.Add("@pws", SqlDbType.Char, 10)
cmd.Parameters("@user").Value = user
cmd.Parameters("@pws").Value = pws
Try
conn.Open()
ret = Convert.ToInt32(cmd.ExecuteScalar())
Catch ex As Exception
'Console.WriteLine(ex.Message)
End Try
End Using
If ret > 0 Then
Session.Add("user", User)
Response.Redirect("login.aspx")
Else
Response.Write("<script>alert('登录失败!')</script>")
TextBox1.Text = ""
TextBox2.Text = ""
TextBox1.Focus()
End If
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
End Class
initial catalog=‘bookdata’
把数据库字段的数据类型改为nvarchar。
在程序中的, SqlDbType.Char
也改为 SqlDbType.NVarChar
就行了。还有一点要注意的地方Convert.ToInt32(cmd.ExecuteScalar())
方法,返null经转换之后,也是0
cm.Parameters.Add("@user", SqlDbType.Char, 20)
cm.Parameters.Add("@pws", SqlDbType.Char, 10)
这里改了吗...command不熟,换datareader试试
Imports System.Data
Imports System.Data.SqlClient
Partial Class Default2
Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim userName As String = TextBox1.Text.Trim()
Dim userPassword As String = TextBox2.Text.Trim()
Dim sqlcon As String = System.Configuration.ConfigurationManager.ConnectionStrings("bookdataConnectionString").ToString()
Dim sqlcomtext As String = "select * from userinfo where user='" + userName + "'and pws='" + userPassword + "'"
Dim conn As SqlConnection = New SqlConnection(sqlcon)
Try
conn.Open()
Dim sqlcom As SqlCommand = New SqlCommand(sqlcomtext, conn)
If sqlcom.ExecuteScalar() <> Nothing Then
Session.Add("login_name", userName)
conn.Close()
Response.Redirect("liuyan.aspx")
Else
Response.Write("<script>alert('登录失败!')</script>")
End If
If conn.State = ConnectionState.Open Then
conn.Close()
End If
Catch ex As Exception
End Try
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
End Class
改成这样还不行,怎么回事啊???