1>程序中的用到Sql 语句:
-----------------------------------
sqlstr+="insert into SendCarCmdTab " +
" (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType) "+
"values('" + this.SendCmdID.Text.ToString() +
"','" + this.CarSendUnit.Text.ToString() +
"','" + this.CarDriver.Text.ToString() +
"','" + this.CarNo.Text.ToString() +
"','" + this.CarType.Text.ToString() +
"','" + this.UseUnit.Text.ToString() +
"','" + this.CarUser.Text.ToString() +
"','" + this.CarUseTime.Text.ToString() +
"','" + this.ReturnTime.Text.ToString() +
"','" + this.Mission.Text.ToString() +
"','" + this.Times.Text.ToString() +
"','" + this.ServerAdd.Text.ToString() +
"','" + this.ReportAdd.Text.ToString() +
"','" + this.FromEnd.Text.ToString() +
"','" + this.CmdSender.Text.ToString() +
"','" + this.FreeType.Text.ToString() + "')";
2>----------------------------------
如果对相应的TextBox赋值是生成的sql形式如下:
insert into SendCarCmdTab (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType)
values('2006-1-1-1','','','','','一连队','','2006-01-03','','','','','前方楼','','','')这个SQL在ACCESS查询中可以运行成功
高手看看怎么回事??----------------------------------
3>-----------------------------------
提示错误 如下:
----------------------------------
操作必须使用一个可更新的查询。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误:
行 194:
行 195: OleDbCommand objcommand=new OleDbCommand(sqlstr,cn);
行 196: objcommand.ExecuteNonQuery();
行 197:
行 198: cn.Close();
源文件: c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs 行: 196 堆栈跟踪:
[OleDbException (0x80004005): 操作必须使用一个可更新的查询。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
clManagement.jgManagement.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs:196
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
-----------------------------------
sqlstr+="insert into SendCarCmdTab " +
" (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType) "+
"values('" + this.SendCmdID.Text.ToString() +
"','" + this.CarSendUnit.Text.ToString() +
"','" + this.CarDriver.Text.ToString() +
"','" + this.CarNo.Text.ToString() +
"','" + this.CarType.Text.ToString() +
"','" + this.UseUnit.Text.ToString() +
"','" + this.CarUser.Text.ToString() +
"','" + this.CarUseTime.Text.ToString() +
"','" + this.ReturnTime.Text.ToString() +
"','" + this.Mission.Text.ToString() +
"','" + this.Times.Text.ToString() +
"','" + this.ServerAdd.Text.ToString() +
"','" + this.ReportAdd.Text.ToString() +
"','" + this.FromEnd.Text.ToString() +
"','" + this.CmdSender.Text.ToString() +
"','" + this.FreeType.Text.ToString() + "')";
2>----------------------------------
如果对相应的TextBox赋值是生成的sql形式如下:
insert into SendCarCmdTab (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType)
values('2006-1-1-1','','','','','一连队','','2006-01-03','','','','','前方楼','','','')这个SQL在ACCESS查询中可以运行成功
高手看看怎么回事??----------------------------------
3>-----------------------------------
提示错误 如下:
----------------------------------
操作必须使用一个可更新的查询。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误:
行 194:
行 195: OleDbCommand objcommand=new OleDbCommand(sqlstr,cn);
行 196: objcommand.ExecuteNonQuery();
行 197:
行 198: cn.Close();
源文件: c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs 行: 196 堆栈跟踪:
[OleDbException (0x80004005): 操作必须使用一个可更新的查询。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
clManagement.jgManagement.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs:196
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
解决方案 »
- 如何用正则表达式实现C#后台给前台的指定的html标签中的img路径添加上服务器端路径
- 高分请教。。。关于FileUpload控件!
- DetailsView如何设置初始值
- 页面刷新问题
- GridView模版列e.Row.Cell[0].Text问题???
- (关于asp.net2.0发邮件问题,急!!) 续!!!
- 可不可在程序中,自由增减数据库表中的字段,以便满足栏目的需求??
- ★有关asp.net登陆的一个小问题★★
- 在打开解决方案时,如果有框架的页面,加载完解决方案后老是提示“文件下载”的对话框?
- 救命啊!一个用户控件和iframe的问题。
- 导出到EXCEL
- 100分请问一个有关查找的问题,都几天了没办法解决
首先给Access加一个everyone的完全控制的权限看看,结果怎么样?
SendCmdID
CarSendUnit
CarDriver
CarNo
CarType
UseUnit
CarUser
CarUseTime
ReturnTime
Mission
Times
ServerAdd
ReportAdd
FromEnd
CmdSender
FreeType
--------------------------
以上字段都是 文本 类型 长度:50
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
updateable query.
或者是:
Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询。
原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个.ldb文件。
2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 '3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close
注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3。还有可能是在ODBC管理器中将该DSN的只读选项选中。
4。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新
这两个表中各自字段。
5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)
中的查询时,在执行这个查询是会出现该错误。
先看看这个.
如果用了ODBC,看看ODBC的设置,是不是只读
问题解决
To: renyu732(Sysinfo) 我按你方法解决了问题
To: singlepine(小山) charles_y(难得糊涂) 感谢善良、热心大哥
我刚学习ACCESS方面东西;晓的很少,
继续学习中。。
SendCmdID varchar(50) ,
CarSendUnit varchar(50) ,
CarDriver varchar(50) ,
CarNo varchar(50) ,
CarType varchar(50) ,
UseUnit varchar(50) ,
CarUser varchar(50) ,
CarUseTime varchar(50) ,
ReturnTime varchar(50) ,
Mission varchar(50) ,
Times varchar(50) ,
ServerAdd varchar(50) ,
ReportAdd varchar(50) ,
FromEnd varchar(50) ,
CmdSender varchar(50) ,
FreeType varchar(50)
)
sql语句没问题