代码如下: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 Socut;
using System.Data.SqlClient;
using System.Data.OleDb;public partial class register : System.Web.UI.Page
{
  // public Socut.Data.CReader dr;
    //public Socut.CReader dr;
//CReader dr;
 // public CData myData = new CData();    protected void Page_Load(object sender, EventArgs e)
    {
        
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strName = TB1.Text.ToString();
        string strPew = TB3.Text.ToString();
        string danweiming = TB4.Text.ToString();
        string damweidi = TB5.Text.ToString();
        string youzhengbian = TB6.Text.ToString();
        string shengfenzheng = TB7.Text.ToString();
        string dianhua = TB8.Text.ToString();
        string email = TB9.Text.ToString();        if (user(strName))
        {
            RegisterStartupScript("", "<script language=javascript>alert('用户名存在');</script>");
            TB1.Text = "";
            TB2.Text = "";
            TB3.Text = "";
            TB4.Text = "";
            TB5.Text = "";
            TB6.Text = "";
            TB7.Text = "";
            TB8.Text = "";
            TB9.Text = "";
            TB1.Focus();
        }
        else
        {
            string strConnection = "provider = Microsoft.Jet.OLEDB.4.0;data source =" + HttpContext.Current.Server.MapPath("~/App_Data/user.mdb");
            OleDbConnection cn = new OleDbConnection(strConnection);
            cn.Open();//打开连接
            //得到当前的连接状态
            string strInsert = "insert into [user]([username],[password],[danweiming],[danweidi],[youzhengbian],[shengfenzheng],[dianhua],[email]) values('" + strName + "','" + strPew + "','" + danweiming + "','" + damweidi + "','" + youzhengbian + "','" + shengfenzheng + "','" + dianhua + "','" + email + "')";            OleDbCommand sqlcmd = new OleDbCommand(strInsert, cn);
            //ExecuteNonQuery()方法来执行没有返回结果的命令
           sqlcmd.ExecuteNonQuery();            cn.Close();
            Response.Redirect("save.html");
        }
      
  /*
        dr = new CReader("SELECT * FROM socut_user WHERE u_name='" + TextBox1.Text + "'");        if (dr.Read())
        {
            Label1.Text = "用户已被注册";
        }        else
        {
            myData.GetExecuteNonQuery("INSERT INTO socut_user(u_name,u_pass) VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "')");            Label1.Text = "注册成功!";
        }
    */
       /*
         dr = new CReader("SELECT * FROM user WHERE username='" + TextBox1.Text + "'");        if (dr.Read())
        {
            Label1.Text = "用户已被注册";
        }        else
        {
            myData.GetExecuteNonQuery("INSERT INTO user(username,password) VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "')");            Label1.Text = "注册成功!";
        }
      */
    }    public bool user(String username)
    {
        String suser = username;        string strConnection = "provider = Microsoft.Jet.OLEDB.4.0;data source =" + HttpContext.Current.Server.MapPath("~/App_Data/user.mdb");
        OleDbConnection cn = new OleDbConnection(strConnection);
        cn.Open();//打开连接
        string strInsert = "select * from [user] where username='" + suser + "'";
        //建立Command对象   
        OleDbCommand sqlcmd = new OleDbCommand(strInsert, cn);
        //ExecuteNonQuery()方法来执行没有返回结果的命令
        //sqlcmd.ExecuteNonQuery();
        OleDbDataReader sdata = sqlcmd.ExecuteReader();
        Response.Write(sdata);
        if (sdata.Read())
        {
            return true;
        }
        else
        {
            return false;
        }    }    
}错误提示:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误: 
行 65:             OleDbCommand sqlcmd = new OleDbCommand(strInsert, cn);
行 66:             //ExecuteNonQuery()方法来执行没有返回结果的命令
行 67:            sqlcmd.ExecuteNonQuery();
行 68:             cn.Close();
行 69:             Response.Redirect("save.html");
 

解决方案 »

  1.   

    sqlcmd.ExecuteNonQuery();把这句注释掉,就不提示错误了,运行成功,但去查找数据库表,根本没插入数据。
      

  2.   

    百度查,说是 权限问题,可我给它添加了everyone,给它完全控制,也没用。
      

  3.   

    单步调试,看看是具体哪出问题,然后把调试看到的SQL语句到DB里面执行试下。
      

  4.   

    把access数据库文件只读去掉。加上everyone SQL语句也看一下
      

  5.   

    看看最终拼成的SQL是什么样子
      

  6.   

    everyone已经加上,只读也去掉了,还是不行
      

  7.   


                string strConnection = "provider = Microsoft.Jet.OLEDB.4.0;data source =" + HttpContext.Current.Server.MapPath("~/App_Data/user.mdb");
                OleDbConnection cn = new OleDbConnection(strConnection);
                cn.Open();//打开连接
                //得到当前的连接状态
                string strName = "test";
                string strPew = "123";
                string danweiming = "danweiming";
                string damweidi = "damweidi";
                string youzhengbian = "youzhengbian";
                string shengfenzheng = "shengfenzheng";
                string dianhua = "dianhua";
                string email = "email";
                string strInsert = "insert into [user]([username],[password],[danweiming],[danweidi],[youzhengbian],[shengfenzheng],[dianhua],[email]) values('" + strName + "','" + strPew + "','" + danweiming + "','" + damweidi + "','" + youzhengbian + "','" + shengfenzheng + "','" + dianhua + "','" + email + "')";            OleDbCommand sqlcmd = new OleDbCommand(strInsert, cn);
                //ExecuteNonQuery()方法来执行没有返回结果的命令
                sqlcmd.ExecuteNonQuery();            Response.Write("没事就输入吧");
    代码没有问题,应该是参数或者权限设置
      

  8.   

    会不会是web.config里要修改什么?
      

  9.   

    你用的ACCESS,跟空间应该没问题。没插入数据那就看看有没有执行到sqlcmd.ExecuteNonQuery();这句
      

  10.   

    是不是要在本地修改IIS? 我上传到虚拟空间上,跟IIS会有关系么?
      

  11.   

    conn.Mode=adModeReadWrite;
    会不会是这句没下去啊 ,可我把这句放进代码里,编译都通不过,该怎么写
      

  12.   

    SQL语句是没有问题的,问题应该出在数据库上,除了主键外的字段都要设置成允许为空
      

  13.   

    1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 
    要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。 
    当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为 
    Jet需要在该目录建立一个.ldb文件。 这里,给文件写的权限 和 给该目录写的权限 有区别吗?  
    什么是目录写的权限?
      

  14.   

    单步调试,注意sql语句里面传入的值,肯定是这里数据的类型出现错误了,修改一下就好了,最好就是单步调试的时候把sql语句可视化复制以后去数据库查询一下,数据库会提示你具体哪里错误。
      

  15.   

    原来用户在请求web页面时win2003服务器使用系统内置的的IIS_WPG组的帐户来访问Access数据库,若IIS_WPG组的帐户没有Access数据库文件的"修改"权限,就会产生这个异常。
    "IIS_WPG"用户组是用于访问和管理IIS信息的内置帐户,默认情况下对IIS中虚拟目录的文件只有"读取"解决方法一:
    在Access数据库文件上单击右键->属性->安全
    单击添加,在文本框中输入"IIS_WPG",单击确定,
    给IIS_WPG设置权限,选中"允许写入",确定OK!方法二:
    按上面步骤添加Ervryone用户,并且给Everyone赋写入权限。
    IIS_WPG 是Win2003的用户,如果是win2000的话,查找IWAM_machin(machine是机器名称)http://blog.csdn.net/niehoude/article/details/4403243