CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

dataGrid删除出现错误,(ASP.NET),急在线等 ,搞定结贴!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{"语法错误 (操作符丢失) 在查询表达式 '111 where w

楼主edify(edify)2006-05-16 10:00:21 在 .NET技术 / ASP.NET 提问

代码:  
  private   void   DataGrid1_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  string   i   =   e.Item.Cells[2].Text;  
   
  // dbcn   C_Dbcn   =   new   dbcn(Server.MapPath("emp.mdb"));  
   
  // C_Dbcn.f_OpenDataBaseForSql("delete   111   where   wu   ='"+   i   +"'");  
  string   t_con   =   @"Provider=Microsoft.Jet.OLEDB.4.0;Data   Source="+   Server.MapPath("emp.mdb")   ;  
  OleDbConnection   t_conn   =   new   OleDbConnection(t_con);  
  OleDbCommand   t_Com   =   new   OleDbCommand();  
  t_Com.Connection   =   t_conn;  
  t_Com.CommandText   =   "delete   111   where   wu   ='"+   i   +"'";  
  try  
  {  
  t_Com.Connection.Open();  
  t_Com.ExecuteNonQuery();  
  }  
  catch(Exception   ex)  
  {  
   
  t_Com   =   null;  
  }  
  finally  
  {  
  // C_Dbcn.f_CloseDataBase();  
  }  
  this.DataGrid1.EditItemIndex   =   -1;  
  BindData();  
   
   
  }  
   
  出现错误如下:  
  {"语法错误   (操作符丢失)   在查询表达式   '111   where   wu   ='df''   中。"   } 问题点数:100、回复次数:25Top

1 楼edify(edify)回复于 2006-05-16 10:07:17 得分 0

我急,自己顶起来Top

2 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-05-16 10:13:24 得分 0

sql语句明显有错呀???  
   
  delete   111   where   ......  
   
  正确的delete语句应该是  
  delete   from   table1   where   id   =   1  
  Top

3 楼smile9961(good life)回复于 2006-05-16 10:14:22 得分 0

delete   111   where   wu   ='"+   i   +"'"  
  --〉  
  delete   [111]   where   wu   ='"+   i   +"'";  
   
  Top

4 楼edify(edify)回复于 2006-05-16 10:18:19 得分 0

delete   from   111   where     试过,不行  
  报错:{"无法从指定的数据表中删除。"   }  
   
  delete   [111]   where   .....   同样不行,报错!!Top

5 楼webwait(webwei)回复于 2006-05-16 10:21:32 得分 0

"delete   from   [111]   where   wu   ='"+   i   +"'"  
  Top

6 楼gyf19(秋天的云)回复于 2006-05-16 10:21:46 得分 0

delete   from   [111]   where   wu   ='"+   i   +"'";  
  Top

7 楼webwait(webwei)回复于 2006-05-16 10:24:02 得分 50

{"语法错误   (操作符丢失)   在查询表达式   '111   where   wu   ='df''   中。"   }  
  ==  
  sql语法错误  
   
  报错:{"无法从指定的数据表中删除。"   }  
  ===  
  添加aspnet用户对emp.mdb的写权限Top

8 楼chaos_blue(chaos(混沌))回复于 2006-05-16 10:26:38 得分 0

不知道你的数据库是如何写的,但肯定的是你这里的错误是SQL语法错误。  
   
  请参照一下SQL修改自己的SQL  
  DELETE   FROM   [TableName]   WHERE   (ID   =   'Value')  
   
  可使用查询分析器。自勉!  
  Top

9 楼edify(edify)回复于 2006-05-16 10:27:23 得分 0

t_Com.CommandText   =   "delete   from   [111]   where   wu   ='"+   i   +"'";  
   
  一样报错;:{"无法从指定的数据表中删除。"   }  
   
   
   
  to:webwait(webwei)    
  添加aspnet用户对emp.mdb的写权限  
   
  在哪   里设置?Top

10 楼zlkingdom(风之悲伤)回复于 2006-05-16 10:27:37 得分 0

SQL语句错了啊  
  应该是DELETE   FROM   111   WHERE   ...  
  记得看看MDB数据库属性是否为只读  
  同时看看文件的操作权限Top

11 楼IamBird()回复于 2006-05-16 10:31:02 得分 0

你的数据表名称是什么?想进行怎么样的操作?  
   
  111是你的数据表名称吗?  
   
  应该是delete   from   111   where   +条件Top

12 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-05-16 10:33:38 得分 0

楼上正解  
   
  to楼主,同样是不行,性质却大不一样,要学会写程序,首先要看明白报的是什么错误  
  Top

13 楼i169net1(阿康)回复于 2006-05-16 10:39:11 得分 0

是啊,首先要搞清楚你的数据库中表的名称...  
   
  111---是数据表的名字吗?  
  Top

14 楼edify(edify)回复于 2006-05-16 10:39:20 得分 0

各位:  
  delete   from   111   where   .....  
  与  
  delete   from   [111]   where   ....  
   
  sql   语句是正确的  
  可是报一样的错..无法从指定的数据表中删除  
   
  发现一个问题,运行程序后,     *.MDB文件变为只读.  
  但是在文件的属性中的只读为空.....  
   
  我有重建一新数据库,同样的问题...变为只读....  
   
  望高手解决!  
   
  (天知道,我不应该用ACCESS的..)Top

15 楼webwait(webwei)回复于 2006-05-16 10:39:49 得分 0

windows资源管理器里,右键点击emp.mdb-》属性-》安全-》。。。。Top

16 楼bh812(与时)回复于 2006-05-16 10:41:50 得分 0

把+改为&试试Top

17 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-05-16 10:44:40 得分 0

用独占方式打开数据库Top

18 楼edify(edify)回复于 2006-05-16 10:46:48 得分 0

windows资源管理器里,右键点击emp.mdb-》属性-》安全-》。。。。  
  进入后,拒绝全为空....  
   
  to:   i169net1(阿康)   IamBird(IamBird)    
   
  111   是表名  
  end  
   
  to:   bh812(与时)  
  &是   VB.NET里的     不过也改写过...报错   (关于&的)     :)  
  end  
   
   
  问题没解决...............Top

19 楼edify(edify)回复于 2006-05-16 10:52:35 得分 0

to:   Eddie005(♂)   暴赱   『零零伍』(︶︵︶)    
   
  怎么样能   用独占方式打开数据库?  
   
  问题没解决...............  
  Top

20 楼edify(edify)回复于 2006-05-16 10:54:39 得分 0

没办法将全代码写入:  
   
  namespace   ProduceInfo  
  {  
  ///   <summary>  
  ///   ProManager   的摘要说明。  
  ///   </summary>  
  public   class   ProManager   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.DataGrid   DataGrid1;  
   
  public   DataSet   t_ds   =   new   DataSet();  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  if   (!Page.IsPostBack)  
  {  
  BindData();  
  }  
   
  }  
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.DataGrid1.CancelCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);  
  this.DataGrid1.EditCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);  
  this.DataGrid1.UpdateCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);  
  this.DataGrid1.DeleteCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   BindData()  
  {  
  dbcn   C_Dbcn   =   new   dbcn(Server.MapPath("emp.mdb"));  
   
  try  
  {  
   
  OleDbDataAdapter   t_Sda   =   new   OleDbDataAdapter("select   *   from   test",C_Dbcn.m_DataBaseConnection);  
  t_Sda.Fill(t_ds);  
  this.DataGrid1.DataSource   =   t_ds;  
  this.DataGrid1.DataBind();  
  }  
  catch   (Exception   ex)  
  {  
  Response.Write   (ex.ToString());  
  }  
  C_Dbcn.f_CloseDataBase();  
  }  
   
  private   void   DataGrid1_EditCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  DataGrid1.EditItemIndex   =   e.Item.ItemIndex;  
  BindData();  
   
  }  
   
  private   void   DataGrid1_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  string   i   =   e.Item.Cells[2].Text;  
   
  int   rowToDelete   =   e.Item.ItemIndex;  
   
  // dbcn   C_Dbcn   =   new   dbcn(Server.MapPath("emp.mdb"));  
   
  // C_Dbcn.f_OpenDataBaseForSql("delete   [111]   where   wu   ='"+   i   +"'");  
   
  string   t_con   =   @"Provider=Microsoft.Jet.OLEDB.4.0;Data   Source="+   Server.MapPath("emp.mdb")   ;  
  OleDbConnection   t_conn   =   new   OleDbConnection(t_con);  
  OleDbCommand   t_Com   =   new   OleDbCommand();  
  t_Com.Connection   =   t_conn;  
  t_Com.CommandText   =   "delete   from   [test]   where   wu   ='"+   i   +"'";  
  try  
  {  
  t_Com.Connection.Open();  
  t_Com.ExecuteNonQuery();  
  }  
  catch(Exception   ex)  
  {  
   
  t_Com   =   null;  
  }  
  finally  
  {  
  t_conn.Close();  
  }  
   
   
  this.DataGrid1.EditItemIndex   =   -1;  
  // BindData();  
   
   
  }  
   
  private   void   DataGrid1_CancelCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  this.DataGrid1.EditItemIndex   =   -1;  
  BindData();  
  }  
   
  private   void   DataGrid1_UpdateCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  TextBox   i1   =   (TextBox)e.Item.Cells[2].Controls[0];  
  TextBox   i2   =   (TextBox)e.Item.Cells[3].Controls[0];  
  TextBox   i3   =   (TextBox)e.Item.Cells[4].Controls[0];  
  TextBox   i4   =   (TextBox)e.Item.Cells[5].Controls[0];  
   
  dbcn   C_Dbcn   =   new   dbcn(Server.MapPath("emp.mdb"));  
   
  C_Dbcn.f_OpenDataBaseForSql("update     111   set   df='"+   i2.Text   +"',df1='"+   i3.Text   +"',df2='"+   i4.Text   +"'   where   wu='"+   i1.Text   +"'");  
  BindData();  
  }  
  }  
   
  同样,update中也出现问题?Top

21 楼XDvlper(XDeveloper)回复于 2006-05-16 10:59:45 得分 0

应该是delete   from   [111]   where   ...  
  如果表名或者字段名使用了数字或者关键字等,   要用[]括起来  
  最好不要这样对表明和字段名命名Top

22 楼careast(雅)回复于 2006-05-16 11:00:26 得分 0

关注中,SQL语句肯定说错的  
   
  至于权限,遇到过这样的问题,不过忘了是怎么解决的。  
  你可以尝试着上网搜寻一下这样的资料,同时自己在捣弄一下,可以在程序中,也可以在access中,多方面尝试,加油,搂主Top

23 楼edify(edify)回复于 2006-05-16 11:17:54 得分 0

已经搞了两天了,进度都慢下来了..  
   
  还是不行了,   只读的好像没有了,每次读完数据库后加了   Connection.close()  
   
  但是一直是;:{"无法从指定的数据表中删除。"   }  
   
   
  同楼上所说,表名改为英文,   所用的SQL语句在数据库里是完全可以运行的..但就是不能在程序中运行  
  望大家帮我解决..  
   
  (我也在找相关资料)Top

24 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-05-16 11:46:04 得分 50

现在可以确定是写权限的问题了,2点:  
  1)选中数据库文件,给用户aspnet授予可写的权限  
  2)当运行程序时,不要同时用access打开数据库  
   
  Top

25 楼edify(edify)回复于 2006-05-16 13:09:10 得分 0

确定是文件权限问题...  
   
  谢谢各位,已结贴Top

相关问题

关键词

得分解答快速导航

  • 帖主:edify
  • webwait
  • Eddie005

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo