dataGrid删除出现错误,(ASP.NET),急在线等 ,搞定结贴!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{"语法错误 (操作符丢失) 在查询表达式 '111 where w
代码:
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




