首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请前辈们帮小弟我看一下小弟我写的简单程序为什么只能执行查询,不能更新

2012-02-17 
请前辈们帮我看一下我写的简单程序为什么只能执行查询,不能更新%@Pagelanguage C# DebugTrue%%@Imp

请前辈们帮我看一下我写的简单程序为什么只能执行查询,不能更新
<%@   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

热点排行