asp.net程序上传到网站虚拟主机后显示出错信息:操作必须使用一个可更新的查询。

pb2000 2008-01-15 12:54:41
我有一段asp测试程序,已在本地机上调试好,输入数据更新到数据库没有问题,但上传到申请的虚拟空间后执行添加数据更新数据库时出错:

Server Error in '/' Application.
--------------------------------------------------------------------------------

操作必须使用一个可更新的查询。
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。

Source Error:


Line 73:
Line 74:
Line 75: Cmd.ExecuteNonQuery()
Line 76:
Line 77: Conn.Close()


Source File: D:\hosting\users\s175981\gs_add.aspx.vb Line: 75

Stack Trace:


[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
gs_add.Button1_Click(Object sender, EventArgs e) in D:\hosting\users\s175981\gs_add.aspx.vb:75
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

--------------------------

相关程序:

'gs_add.aspx.vb

Imports System.Data
Imports System.Data.OleDb
Public Class gs_add
Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents tb_gsdm As System.Web.UI.WebControls.TextBox
Protected WithEvents tb_gsjc As System.Web.UI.WebControls.TextBox
Protected WithEvents tb_gsmc As System.Web.UI.WebControls.TextBox
Protected WithEvents lb_msg As System.Web.UI.WebControls.Label
Protected WithEvents Button3 As System.Web.UI.WebControls.Button

'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region
Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
Dim Database = "Data Source=" & Server.MapPath("wfbase.mdb")
Dim Conn As OleDbConnection, Cmd As OleDbCommand
Dim rd As OleDbDataReader
Dim SQL, nr As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Conn = New OleDbConnection(Provider & ";" & Database)
Conn.Open()
SQL = "select count(*) as reccount from gs"
Cmd = New OleDbCommand(SQL, Conn)
rd = Cmd.ExecuteReader()
If rd.Read() Then
tb_gsdm.Text = Format(rd.Item("reccount") + 1, "00")

End If
rd.Close()
Conn.Close()
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If tb_gsmc.Text = "" Or tb_gsjc.Text = "" Then
'Response.Write("<script language=javascript>alert('请将各项目填全!')</script>")
lb_msg.Text = "提示:记录未保存,请将各项目填全!"
Exit Sub
End If

Conn = New OleDbConnection(Provider & ";" & Database)
Conn.Open()

SQL = "insert into gs (gsdm,gsmc,gsjc) values(@gsdm,@gsmc,@gsjc)"

Cmd = New OleDbCommand(SQL, Conn)

Cmd.Parameters.Add(New OleDbParameter("@gsdm", OleDbType.Char, 255))
Cmd.Parameters.Add(New OleDbParameter("@gsmc", OleDbType.Char, 255))
Cmd.Parameters.Add(New OleDbParameter("@gsjc", OleDbType.Char, 255))

Cmd.Parameters("@gsdm").Value = Trim(tb_gsdm.Text)
Cmd.Parameters("@gsmc").Value = Trim(tb_gsmc.Text)
Cmd.Parameters("@gsjc").Value = Trim(tb_gsjc.Text)


Cmd.ExecuteNonQuery()

Conn.Close()
lb_msg.Text = "提示:记录保存成功!"
End Sub

End Class

--------------------------
所申请的虚拟主机有执行脚本的权限,支持asp.net+access数据库。

请执行一下这个程序:http://www.wonful.net/gs_admin.aspx (管理页面)

在这个管理页面中可以读取数据库显示信息,但点“增加”执行http://www.wonful.net/gs_add.aspx程序后数据无法保存
就会出现上面的错误信息。

我用的是vs2003+asp.net1.1,是不是我的程序用的asp.net1.1与服务器上的asp2.0不匹配?
难道是他们没有给我放everyone写入数据库权限么?

本人初学,这是我做的第一个asp.net程序,麻烦大家帮看看,先谢谢了!
...全文
430 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
noahsmile 2010-12-26
  • 打赏
  • 举报
回复
怎么回事
北京的雾霾天 2008-01-15
  • 打赏
  • 举报
回复
你的表gs 是不是缺少主键,如果是,则添加一个主键再试试看;
pb2000 2008-01-15
  • 打赏
  • 举报
回复
谢谢大家,经与空间提供商联系知道真的是他们没给我放开目录写入权限,害得我四处找其他原因!
china0308 2008-01-15
  • 打赏
  • 举报
回复
把ACCESS所在目录加“写入”权限,然后重启IIS“IISRESET”
xierfly 2008-01-15
  • 打赏
  • 举报
回复
权限问题呀。你要给它”写入“的权限就可以了。
c11_11_11 2008-01-15
  • 打赏
  • 举报
回复
在服务器上的ACCESS数据库文件 目录上加上写的权限
北京的雾霾天 2008-01-15
  • 打赏
  • 举报
回复
再有可能是不能够写数据库造成的,最普遍的原因是匿名用户帐号IUSR_MACHINE等对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个.ldb文件。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧