全部代码:
<%@ Page Language="C#" Debug="true" %><%@ Import Namespace="System.Data.OleDb" %><script language="C#" runat="Server">
    public void Page_Load(Object src, EventArgs e)
    {
        string str1 = Request.QueryString["datatime"];
        string str2 = Request.QueryString["dataname"];
        string str3 = Request.QueryString["datainfo"];
        OleDbConnection MyConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + HttpContext.Current.Server.MapPath("../data/#zjk.mdb") +"");
        OleDbCommand MyComm = new OleDbCommand("insert into Diary(datatime,dataname,datainfo) values('" + str1 + "','" + str2 + "','" + str3 + "')", MyConn);
        MyConn.Open();
        MyComm.ExecuteNonQuery();
        Response.Write("ok");
        MyConn.Close();
    }
</script>扔iis里 运行在
行 14:         MyComm.ExecuteNonQuery();  报错:操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。
access俺也给他everyone 权限了  也没有非空值
俺也不知道是俺哪写错了 还是俺眼花了 ~
怎么改都不好使捅咕3个小时了  妈的

解决方案 »

  1.   

     string str1 = Request.QueryString["datatime"].ToString();
            string str2 = Request.QueryString["dataname"].ToString();
            string str3 = Request.QueryString["datainfo"].ToString();
            OleDbConnection MyConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + HttpContext.Current.Server.MapPath("../data/#zjk.mdb") +"");
            OleDbCommand MyComm = new OleDbCommand("insert into Diary(datatime,dataname,datainfo) values(#" + str1 + "#,'" + str2 + "','" + str3 + "')", MyConn);
            MyConn.Open();
            MyComm.ExecuteNonQuery();
            Response.Write("ok");
            MyConn.Close();
      

  2.   

    你的access库是只读的还是存档的?属性里设置为存档!
    以前我也经常碰到此问题!
      

  3.   

    不要这样写
    一容易SQL注入
    二SQL语句很容易出错(如果是日期类型的话,是要加##的)
    所以用OLEDBPARAMETERS的参数来写。这些错误就可以避免
    既然用了.NET就把它用好,要不然微软
    就白开发它了
      

  4.   

    二SQL语句很容易出错(如果是日期类型的话,是要加##的) 
    可能是这种情况