using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
namespace messageboard
{
/// <summary>
/// fbly 的摘要说明。
/// </summary>
public class fbly : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txt_Author;
protected System.Web.UI.WebControls.TextBox txt_time;
protected System.Web.UI.WebControls.TextBox txtIP;
protected System.Web.UI.WebControls.TextBox txtContent;
protected System.Web.UI.WebControls.Button btnSubmit; OleDbConnection myConn=new OleDbConnection();
OleDbCommand myCom=new OleDbCommand();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
txt_time.Text=System.DateTime.Now.ToString();
txtIP.Text=Request.UserHostAddress.ToString();
myConn.ConnectionString=System.Configuration.ConfigurationSettings.AppSettings.Get("MessageBoard");
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void btnSubmit_Click(object sender, System.EventArgs e)
{
string author=txt_Author.Text;
string time=txt_time.Text;
string ip=txtIP.Text;
string content=txtContent.Text; myCom.CommandText="insert into message(name,ip,content,message_time) values ("+"'"+author+"'"+","+"'"+ip+"'"+","+"'"+content+"'"+","+"'"+time+"'"+")";
myCom.Connection=myConn;
myConn.Open();
myCom.ExecuteNonQuery();
}
}
}
出错如下:
“/MySite/FilterMsgBoard”应用程序中的服务器错误。
--------------------------------------------------------------------------------操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误: 
行 67:  myCom.Connection=myConn;
行 68:  myConn.Open();
行 69:  myCom.ExecuteNonQuery();
行 70:  }
行 71:  }
 
怎么回事?
程序是我在Vs.netBeta2 + Access200无误通过的!
在2003中加载提示转换后
再运行出如上错误???

解决方案 »

  1.   

    myCom.Connection=myConn;
    myConn.Open();把这两行的位置换一下试试
      

  2.   

    是不是你的系统里设置了访问ACCESS的限制没,你看看ACCESS是不是自动变成只读的了
      

  3.   

    我也有这个问题 跟系统有关 但是找不到问题所在 公司服务器重装后 原来动网也报这个错,重装了mdac2.7,换了连接字符串也不行 看来只好重装系统了 !-_-
      

  4.   

    如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中) 
    问题分析:分析一下用户访问的情况,用户请求web页面,服务器使用系统内置的的IIS_WPG组的帐户来访问Access数据库,若IIS_WPG组的帐户没有Access数据库文件的"修改"权限,就会产生这个异常"IIS_WPG"用户组是用于访问和管理IIS信息的内置帐户,默认情况下对IIS中虚拟目录的文件只有"读取"权限.解决方法:在Access数据库文件上单击右键->属性->安全单击添加,在文本框中输入"IIS_WPG",单击确定,给IIS_WPG设置权限,选中"允许写入",确定OK!---------------------------------------------
    有时查不到安全选项卡怎么办?找到数据文件夹所在地,在窗口上找到工具-->文件夹选项-->查看-->使用简单文件共享(推荐)的勾去掉,
    然后按上面写的做即可
    -------------------------------
    方法二:在ervryone 中给读权限,即可