data source=(local);initial catalog=bookdata;integrated security=sspi;  数据库语句对不对哦

解决方案 »

  1.   

    断点到open报错没?  
      

  2.   

    你的登陆是指登陆数据库登陆不了 还是执行程序反映登陆不了?   如果是数据库登录不了看看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参数没用,可能是我没这么用过吧
      

  3.   


    这是我的登录界面和user表,填完点登陆按钮后,都是出现下来的那个框登录失败,到底是怎么回事啊???
      

  4.   

    你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
      

  5.   

    额  
    initial catalog=bookdata
      

  6.   

    不是上个贴说了是char(10)还有char(30)的问题吗.....会自动填充空格满10个字符及30个字符...换char(10)为nvarchar(10)后,把数据里的空格给清掉
      

  7.   

    尝试改一下数据类型。
    把数据库字段的数据类型改为nvarchar。
    在程序中的, SqlDbType.Char
    也改为 SqlDbType.NVarChar
    就行了。还有一点要注意的地方Convert.ToInt32(cmd.ExecuteScalar())
    方法,返null经转换之后,也是0
      

  8.   

    看到user和pws字段下的空格了吗..
      

  9.   


     cm.Parameters.Add("@user", SqlDbType.Char, 20)
            cm.Parameters.Add("@pws", SqlDbType.Char, 10)
    这里改了吗...command不熟,换datareader试试
      

  10.   

    用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
    改成这样还不行,怎么回事啊???