请前辈们帮我看一下我写的简单程序为什么只能执行查询,不能更新
<%@ Page language= "C# " Debug=True %>
<%@ Import Namespace= "System.Data " %>
<%@ Import Namespace= "System.Data.OleDb " %>
<Script Language= "C# " Runat= "Server ">
OleDbConnection MyConn;
public void Page_Load(Object src,EventArgs e)
{
//数据连接字符串
string MyConnString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "+Server.MapPath( ". ")+ "..\\RENSHI.MDB; ";
MyConn=new OleDbConnection(MyConnString);
MyConn.Open();
if(!Page.IsPostBack)
{
//将数据绑定至Orign数据表格
BindGrid(Orign);
}
}
public void btnUpdate_Click(Object sender,EventArgs e)
{
//更新语句
string strUpdate = "UPDATE department SET department.part_pho= 'jjjj ' ";
OleDbCommand MyComm = new OleDbCommand(strUpdate, MyConn);
//执行更新语句
MyComm.ExecuteNonQuery();
//MyComm.ExecuteReader();
//数据绑定至New数据表格
//BindGrid(New);
}
public void BindGrid(DataGrid dg)
{
OleDbDataReader dr;
string strSel= "Select * from department ";
OleDbCommand MyComm=new OleDbCommand(strSel,MyConn);
//注意下面
dr=MyComm.ExecuteReader();
dg.DataSource=dr;
dg.DataBind();
}
</Script>
<HTML>
<HEAD>
<TITLE> MyUpData </TITLE>
</HEAD>
<BODY>
<form id = "form1 " runat= "server ">
<CENTER>
<TABLE>
<TR>
<TD> 原始数据 </TD>
<TD> 更新后数据 </TD>
</TR>
<TR>
<TD> <asp:DataGrid id= "Orign " runat= "server " AutoGenerateColumns= "False ">
<Columns>
<asp:BoundColumn HeaderText= "ID " DataField= "part_id "/>
<asp:BoundColumn HeaderText= "电话 " DataField= "part_pho "/>
<asp:BoundColumn HeaderText= "负责人 " DataField= "principal "/>
</Columns>
</asp:DataGrid>
</TD>
<TD> <asp:DataGrid id= "New " runat= "server " AutoGenerateColumns= "False ">
<Columns>
<asp:BoundColumn HeaderText= "ID " DataField= "part_id "/>
<asp:BoundColumn HeaderText= "电话 " DataField= "part_pho "/>
<asp:BoundColumn HeaderText= "负责人 " DataField= "principal "/>
</Columns>
</asp:DataGrid>
</TD>
</TR>
<TR>
<TD>
<asp:Button id= "btnUpdate " text= "更新 " OnClick= "btnUpdate_Click " runat= "server "/>
</TD>
</TR>
</TABLE>
</CENTER>
</form>
</BODY>
</HTML>
当点击更新按钮后出现如下错误:
“/Text”应用程序中的服务器错误。
操作必须使用一个可更新的查询。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。
源错误:
行 25: OleDbCommand MyComm = new OleDbCommand(strUpdate, MyConn);
行 26: //执行更新语句
行 27: MyComm.ExecuteNonQuery();
行 28: //MyComm.ExecuteReader();
行 29: //数据绑定至New数据表格
源文件: c:\ASP.NET\news\MyUpData.aspx 行: 27
堆栈跟踪:
[OleDbException (0x80004005): 操作必须使用一个可更新的查询。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +267
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +192
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +48
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +106
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +108
ASP.news_myupdata_aspx.btnUpdate_Click(Object sender, EventArgs e) in c:\ASP.NET\news\MyUpData.aspx:27
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
[解决办法]
这样看起来是看不出问题,是不是你的MDB数据库有问题,你新建一个MDB试试
[解决办法]
可能是匿名用户帐号对该数据库没有写权限
[解决办法]
string strUpdate = "UPDATE department SET part_pho= 'jjjj ' ";
看看字段名有没写错
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
http://topic.csdn.net/t/20050910/02/4260960.html
[解决办法]
数据库,属性安全-> 加一个读写权限的everyone
[解决办法]
asp.net用户对mdb目录要有写权限
[解决办法]
最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个.ldb文件。
详见:
http://likefreedom.bokee.com/2765457.html