做了一个最简单的登录框,用单文件形式。ACCESS数据库。里面表user里已经有用户名和密码的数据。并SQL语句已经在数据库中验证成功。
文件清单如下:<%@ Page Language="C#" %>
– <%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    protected void Button1_Click(object sender, EventArgs e)
    {
        string  name=TextBox1.Text;
        string pasw=TextBox2.Text;        string mystr;
        OleDbConnection myconn = new OleDbConnection();
        mystr = "Provider = Microsoft.Jet.OLEDB.4.0;" +
            "Data Source =" + Server.MapPath("~\\App_data\\Stud.mdb");
        myconn.ConnectionString = mystr;
        myconn.Open();
        string sql;
        sql = "select   count(*)   from   user  where    use_name='" + name + "' and passw='" + pasw + "'";
        OleDbCommand mycmd = new OleDbCommand();
        mycmd.CommandText = sql;
    
        mycmd.Connection = myconn;
        int count = (int)mycmd.ExecuteScalar();
        if (count == 1)         {
            Label1.Text = "欢迎你," + TextBox1.Text;
        }
        else 
        {
            Response.Redirect("登录.aspx");
        }
    }
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <p>
        用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </p>
    <p>
        密&nbsp;&nbsp;&nbsp; 码:<asp:TextBox ID="TextBox2" runat="server" 
            TextMode="Password"></asp:TextBox>
    </p>
    <p>
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="登录" />
    </p>
    <div>
    
        <asp:Label ID="Label1" runat="server"></asp:Label>
    
    </div>
    </form>
</body>
</html>
运行时,出现正常的登录框,用正确的用户名和密码登录,出现提示。指出的是int count = (int)mycmd.ExecuteScalar();语句。在源程序中弹出消息框说“用户代码未处理”下面的内容是“FROM子句错误。”将SELECT 语句换面只检索一项的,比如用户名,然后再进行读取判断,也是这样的提示。请教大家,是什么样的错误。谢谢帮助。

解决方案 »

  1.   

    user是Access关键字,使用必须加[]sql = "select count(*) from [user] where use_name='" + name + "' and passw='" + pasw + "'";
      

  2.   

    表名字加上[],避免同关键字冲突。
    sql = "select count(*) from [user] where use_name='" + name + "' and passw='" + pasw + "'";
      

  3.   

    再请问一下,是仅仅ACCESS中需要这样写吗?原来用SQL SERVER 数据库好象并不需要。是不是?
      

  4.   

    SQL Server中也是,只是不加[]也可以,但最好是加。
      

  5.   

    SQL Server 早期版本也是需要加的。
      

  6.   

    关键字都要方括号引起来,sql server中也是,如果你不确定是不是关键字,可以将字段名或表明都用方括号引起来。
      

  7.   

    sql的问题的话,可以在dbms里先测试一下sql语句