using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
using System.Globalization;public partial class Register : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    //public static string checkUserPwd(string username)
    //{
       
    //    //以下用ADO.NET操作数据库判断
    //    OleDbConnection conn = new OleDbConnection();
    //    conn.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
    //    string sql = "select(Name) from PersonInfo where username='" + TxtName.Text.ToString() + "'";
    //    if (conn.State == ConnectionState.Closed)
    //    {
    //        conn.Open();
    //    }
    //    OleDbCommand MyCmd = new OleDbCommand(sql, conn);
    //    MyCmd.ExecuteNonQuery();
    //    return sql;
    //}
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
       // if (checkUserPwd==true)
       //{
       //   Response.Write("<script>alert('该用户名已经存在,请注册其他用户名!')</script>");
       // }
       //else
       // {
            string time;
            String format = "yyyyMMddhhmmssf";
            DateTime date = DateTime.Now;
            time = date.ToString(format, DateTimeFormatInfo.InvariantInfo);
            string name = TxtName.Text.ToString();            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
            string strsql = "insert into PersonInfo(time1,Name,Sex,Grade,Area,Income) values('" + time + "','" + TxtName.Text.ToString() + "','" + DplSex.SelectedValue.ToString() + "','" + DplGrade.SelectedValue.ToString() + "','" + DplArea.SelectedValue.ToString() + "','" + DplIncome.SelectedValue.ToString() + "')";
            Session["Name"] = name;
            Session["time"] = time;
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            OleDbCommand MyCmd = new OleDbCommand(strsql, conn);
            MyCmd.ExecuteNonQuery();
            //Server.Transfer("Page2.aspx");
            Response.Write("<script>alert('注册成功!!');location.href='Page1.aspx'</script>");
            //Response.Redirect("Page1.aspx");
        }
    //}
}
注释掉的 偶实现不了,希望能实现的童鞋们帮帮忙哦。。   O(∩_∩)O谢谢 
 O(∩_∩)O谢谢
 O(∩_∩)O谢谢
 O(∩_∩)O谢谢

解决方案 »

  1.   

    是什么问题,你那段代码,都写得差不多了,怎么注释了。只是修改一下,不要用ExecuteNonQuery,使用ExecuteReader或者ExecuteScalar,具体的,你仔细学习一下ExecuteReader或者ExecuteScalar的用法就知道了,很简单的哈。
      

  2.   

    你把问题分成两个部分,第一个部分是如何读写 Access 数据库,网上这种代码多得很。把这个东东掌握了,从里面查询一个用户名是否存在是很简单的,
      

  3.   

     string sql = "select * from PersonInfo where username='" + TxtName.Text.ToString() + "'";
    再查看查出来的是否为空,就行了
    if (checkUserPwd==true)
    是啥情况?
      

  4.   

    bool ishv=false;
    string scon="Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
    OleDbConnection  conn= new OleDbConnection(scon);
                            OleDbCommand sqlc = new OleDbCommand();
                            sqlc.Connection = conn;
                            conn.Open();
                            sqlc.CommandText = "select * from PersonInfo where username='" + TxtName.Text.ToString() + "'";
                            OleDbDataReader sqlr = sqlc.ExecuteReader();
                            if (sqlr.Read())
                            {
                                ishv = true;
                            }
                            sqlc = null;
                            sqlcon.Close();
                            sqlcon = null;
    return ishv;函数返回值改为布尔类型
    主函数调用,你试试
      

  5.   

    错了,忘改了
    conn.Close();
    conn = null;
    return ishv;
      

  6.   

    public static bool checkUserPwd(string username)
      {
        
      //以下用ADO.NET操作数据库判断
       using (OleDbConnection conn = new OleDbConnection())
       {
    conn.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
    string sql = "select(Name) from PersonInfo where username='" + TxtName.Text.ToString() + "'";
    if (conn.State == ConnectionState.Closed)
    conn.Open();
    bool isExistsUser=false;
    using(OleDbCommand MyCmd = new OleDbCommand(sql, conn))
    {OleDbDataReader sqlr=MyCmd.ExecuteReader();
    isExistsUser=rd.Read();
    }
    return isExistsUser;
    }
      }
      protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
      {
       if (checkUserPwd==true)
      {
    Response.Write("<script>alert('该用户名已经存在,请注册其他用户名!')</script>");
       }
      else
       {
    //你这段代码有了,我就没写了。
       }
      }
      

  7.   

    上面错了:using(OleDbCommand MyCmd = new OleDbCommand(sql, conn))
            {OleDbDataReader sqlr=MyCmd.ExecuteReader();
                isExistsUser=rd.Read();
            }改为
    using(OleDbCommand MyCmd = new OleDbCommand(sql, conn))
            {OleDbDataReader sqlr=MyCmd.ExecuteReader();
                isExistsUser=sqlr.Read();
            }你要给分,给我上面那个朋友吧,我多半是复制他的,只是想早点休息而已。
      

  8.   

    只是大概思路,具体的因为你的问题有好多不太确定的
    比如你的用户名放在TxtName.Text里还是username里,你的函数里username没有用啊
    if (checkUserPwd==true)  checkUserPwd是变量还是函数调用,它要不要参数
    你自己的ACCESS存放的路径是否与连接字符串一致
    好的东西是要你自己协调的啊
      

  9.   


    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.OleDb;
    using System.Globalization;public partial class Register : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {  }
      public bool checkUserPwd(string username)
      {
         bool flag = false; //标识
       //以下用ADO.NET操作数据库判断
      OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("./App_Data/DbVote.mdb"));//建立数据库连接 
      string sql = "select [Name] from PersonInfo where username='" + username + "'";
      if (conn.State == ConnectionState.Closed)
      {
      conn.Open();
      }
      OleDbCommand MyCmd = new OleDbCommand(sql, conn);
       int count = MyCmd.ExecuteScalar();
       if(count>0)
        flag = true;
      return flag; 
      }
      protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
      {
      if (checkUserPwd(TxtName.Text.ToString())==true)
      {
      Response.Write("<script>alert('该用户名已经存在,请注册其他用户名!')</script>");
      }
      else
      {
      string time;
      String format = "yyyyMMddhhmmssf";
      DateTime date = DateTime.Now;
      time = date.ToString(format, DateTimeFormatInfo.InvariantInfo);
      string name = TxtName.Text.ToString();  OleDbConnection conn = new OleDbConnection();
      conn.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
      string strsql = "insert into PersonInfo(time1,Name,Sex,Grade,Area,Income) values('" + time + "','" + TxtName.Text.ToString() + "','" + DplSex.SelectedValue.ToString() + "','" + DplGrade.SelectedValue.ToString() + "','" + DplArea.SelectedValue.ToString() + "','" + DplIncome.SelectedValue.ToString() + "')";
      Session["Name"] = name;
      Session["time"] = time;
      if (conn.State == ConnectionState.Closed)
      {
      conn.Open();
      }
      OleDbCommand MyCmd = new OleDbCommand(strsql, conn);
      MyCmd.ExecuteNonQuery();
      //Server.Transfer("Page2.aspx");
      Response.Write("<script>alert('注册成功!!');location.href='Page1.aspx'</script>");
      //Response.Redirect("Page1.aspx");
      }
      //}
    }照着你的随便改了下,你的代码写的太混乱了,你看行不行。
      

  10.   


    错误 1 无法将类型“object”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?) C:\Users\open\Desktop\MrsChenXXXX\Register.aspx.cs 33 21 C:\...\MrsChenXXXX\
      int count = MyCmd.ExecuteScalar();  这个话出错了哦  你看看哦
      

  11.   

    转型下就可以了嘛,这么简单的错误
    int count = int.Parse(MyCmd.ExecuteScalar());
      

  12.   

    推荐lz加入我刚建立的.NET群,涉及GIS、Silverlight、WPF等技术哦
      

  13.   

    主要根据输入到数据库中进行判断,使用ExecuteReader或者ExecuteScalar
      

  14.   


      这段代码才可以    int count =Convert.ToInt32(MyCmd.ExecuteScalar());
      可是还是会出错哦  VS2008这么说: 至少一个参数没有被指定值。希望好人帮到底哦
      

  15.   

     public bool checkUserPwd(string username)
      {
         bool flag = false; //标识
       //以下用ADO.NET操作数据库判断
      OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("./App_Data/DbVote.mdb"));//建立数据库连接 
      string sql = "select [Name] from PersonInfo where username='" + username + "'";
      if (conn.State == ConnectionState.Closed)
      {
      conn.Open();
      }
      OleDbCommand MyCmd = new OleDbCommand(sql, conn);
       int count = MyCmd.ExecuteScalar();
       if(count>0)
        flag = true;
      return flag; 
      }
      protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
      {
      if (checkUserPwd(TxtName.Text.ToString())==true)
      {
      Response.Write("<script>alert('该用户名已经存在,请注册其他用户名!')</script>");
      }
      else
      {
      string time;
      String format = "yyyyMMddhhmmssf";
      DateTime date = DateTime.Now;
      time = date.ToString(format, DateTimeFormatInfo.InvariantInfo);
      string name = TxtName.Text.ToString();  OleDbConnection conn = new OleDbConnection();
      conn.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data/DbVote.mdb");
      string strsql = "insert into PersonInfo(time1,Name,Sex,Grade,Area,Income) values('" + time + "','" + TxtName.Text.ToString() + "','" + DplSex.SelectedValue.ToString() + "','" + DplGrade.SelectedValue.ToString() + "','" + DplArea.SelectedValue.ToString() + "','" + DplIncome.SelectedValue.ToString() + "')";
      Session["Name"] = name;
      Session["time"] = time;
      if (conn.State == ConnectionState.Closed)
      {
      conn.Open();
      }
      OleDbCommand MyCmd = new OleDbCommand(strsql, conn);
      MyCmd.ExecuteNonQuery();
      Response.Write("<script>alert('注册成功!!');location.href='Page1.aspx'</script>");
      }
      

  16.   

    看出来了,你SQL语句有问题
     string sql = "select [Name] from PersonInfo where username='" + username + "'";
    红色标注的两个字段应该是一样的吧,你看看你数据中那个字段究竟是什么名字,你自己找找吧
      

  17.   

    public bool checkUserPwd(string username)
        {
            bool flag = false; //标识
            //以下用ADO.NET操作数据库判断
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("App_Data/DbVote.mdb"));//建立数据库连接 
            string sql = "select [Name] from PersonInfo where Name='" + username + "'";
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            OleDbCommand MyCmd = new OleDbCommand(sql, conn);
       
            if (MyCmd.ExecuteScalar()!=null)
            {
                string d = MyCmd.ExecuteScalar().ToString();
                if (username.Equals(d))
                {
                    flag = true;
                }
            }
     
         
            return flag;
        }    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {
            if (checkUserPwd(TxtName.Text.ToString())==true)
           {
              Response.Write("<script>alert('该用户名已经存在,请注册其他用户名!')</script>");
            }   贴出正确代码哦    很谢谢大家