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

"语法异常 (操作符丢失) 在查询表达式

2012-01-05 
语法错误 (操作符丢失) 在查询表达式我使用的是webeditor控件,想上传一个FLASH在提交的时候出现了这个问

"语法错误 (操作符丢失) 在查询表达式
我使用的是webeditor控件,想上传一个FLASH   在提交的时候出现了这个问题,
{ "语法错误   (操作符丢失)   在查询表达式   ' ' <P>
<OBJECT   codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0   height=200   width=300   classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000> <PARAM   NAME= "_cx "   VALUE= "7938 "> <PARAM   NAME= "_cy "   VALUE= "5292 "> <PARAM   NAME= "F '   中。 "}

获得的异常情况为:
用户代码未处理   System.Data.OleDb.OleDbException
    ErrorCode=-2147217900
    Message= "语法错误   (操作符丢失)   在查询表达式   ' ' <P>
<OBJECT   codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0   height=200   width=300   classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000> <PARAM   NAME= "_cx "   VALUE= "7938 "> <PARAM   NAME= "_cy "   VALUE= "5292 "> <PARAM   NAME= "F '   中。 "
    Source= "Microsoft   JET   Database   Engine "
    StackTrace:
              在   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult   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()
              在   myblog.a_edit.submit_Click(Object   sender,   EventArgs   e)   位置   D:\net\myweb\myblog\admin\a_edit.aspx.vb:行号   76
              在   System.Web.UI.WebControls.Button.OnClick(EventArgs   e)
              在   System.Web.UI.WebControls.Button.RaisePostBackEvent(String   eventArgument)
              在   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(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)

在webeditor中的代码为:
" <P>
<OBJECT   codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0   height=200   width=300   classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000> <PARAM   NAME= "_cx "   VALUE= "7938 "> <PARAM   NAME= "_cy "   VALUE= "5292 "> <PARAM   NAME= "FlashVars "   VALUE= " "> <PARAM   NAME= "Movie "   VALUE= "function/upload/vs200520.swf "> <PARAM   NAME= "Src "   VALUE= "function/upload/vs200520.swf "> <PARAM   NAME= "WMode "   VALUE= "Window "> <PARAM   NAME= "Play "   VALUE= "-1 "> <PARAM   NAME= "Loop "   VALUE= "-1 "> <PARAM   NAME= "Quality "   VALUE= "High "> <PARAM   NAME= "SAlign "   VALUE= " "> <PARAM   NAME= "Menu "   VALUE= "-1 "> <PARAM   NAME= "Base "   VALUE= " "> <PARAM   NAME= "AllowScriptAccess "   VALUE= " "> <PARAM   NAME= "Scale "   VALUE= "ShowAll "> <PARAM   NAME= "DeviceFont "   VALUE= "0 "> <PARAM   NAME= "EmbedMovie "   VALUE= "0 "> <PARAM   NAME= "BGColor "   VALUE= " "> <PARAM   NAME= "SWRemote "   VALUE= " "> <PARAM   NAME= "MovieData "   VALUE= " "> <PARAM   NAME= "SeamlessTabbing "   VALUE= "1 "> <PARAM   NAME= "Profile "   VALUE= "0 "> <PARAM   NAME= "ProfileAddress "   VALUE= " "> <PARAM   NAME= "ProfilePort "   VALUE= "0 ">


<embed   src=function/upload/vs200520.swf   quality=high   pluginspage= 'http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash '   type= 'application/x-shockwave-flash '   width=300   height=200> function/upload/vs200520.swf </embed> </OBJECT> </P> "


不知道什么原因,若是提交其它的文本文件可以`~~~


代码为:         Private   Sub   submit_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   submit.Click
                        Dim   oledbconn   As   New   System.Data.OleDb.OleDbConnection
                        oledbconn.ConnectionString   =   "Provider   =   Microsoft.Jet.OLEDB.4.0;Data   Source= "   &   Server.MapPath( "../blogdata/blog.mdb ")
                        Dim   oledbcmd   As   New   System.Data.OleDb.OleDbCommand
                        oledbcmd.Connection   =   oledbconn
                Dim   sqlstr   As   String
                Dim   sort1   As   String
                sort1   =   CType(sort.SelectedItem.Text,   String)

                        Dim   onlyadmin1   As   String
                        onlyadmin1   =   onlyadmin.Checked

                        sqlstr   =   "insert   into   article(title,sort,writer,onlyadmin,content,miange1,addtime)   values( ' "   &   title.Text   &   " ', ' "   &   sort1   &   " ', ' "   &   writer.Text   &   " ', ' "   &   onlyadmin1   &   " ', ' "   &   WebEditor1.Text   &   " ', ' "   &   miange1.SelectedValue   &   " ', ' "   &   DateTime.Now   &   " ') "
                        oledbcmd.CommandText   =   sqlstr
                        oledbconn.Open()
                        oledbcmd.ExecuteNonQuery()
                        oledbconn.Close()
                        Response.Redirect( "a_list.aspx ")


        End   Sub

谢谢   请高手指点下


[解决办法]
你这种写法对SQL Server是正确的,对于ACCESS,要改成这样:
sqlstr = "insert into article(title,sort,writer,onlyadmin,content,miange1,addtime) values( ' " & title.Text & " ', ' " & sort1 & " ', ' " & writer.Text & " ', ' " & onlyadmin1 & " ', ' " & WebEditor1.Text & " ', ' " & miange1.SelectedValue & " ',# " & DateTime.Now & "#) "


另外,如果文本框中含有单引号( '),你这样写是有问题的,所以要么将单引号替换成两个单引号( ' '),要么用传参数的方法。
[解决办法]
Replace(strSource, " ' ", " ' ' ")

热点排行