日期:2014-05-17  浏览次数:20465 次

SQL的删除问题
在SQL Server中,删除是这样的:
DECLARE @sql varchar(8000)
SET @sql='delete from members where member_id in ('+@_ids+')'
EXEC(@sql)

在c#中定义参数就可以了:
OleDbParameter _param = new OleDbParameter("@_ids", OleDbType.LongVarChar);

在Access中为什么不行?
string sql="delete from members where member_id in (@_ids)";
OleDbParameter _param = new OleDbParameter("@_ids", OleDbType.LongVarChar);

另:
string sql="delete from members where member_id in ("+_ids+")";
这种方式不要

------解决方案--------------------
很正常,Access和sql server本来就不一样
也许Access本来就不可以。。
你可以打开access中直接操作看可不可以
------解决方案--------------------
什么错误。需要详细错误信息。
------解决方案--------------------
try

string sql="delete from members where member_id in (?)";
OleDbConnection Conn = new OleDbConnection(strConnection); 
Conn.Open(); 
OleDbCommand command=new OleDbCommand(sql,Conn);
command.Parameters.AddWithValue("?", OleDbType.LongVarChar).Value = 你的参数值;   
command.ExecuteQuery();
Conn.Close();      
------解决方案--------------------
在Access中为什么不行?
 string sql="delete from members where member_id in (@_ids)";
 OleDbParameter _param = new OleDbParameter("@_ids", OleDbType.LongVarChar);
 
有一点,在access中字段要加[]
那种参数写法没试过,还有有什么错贴出来吧
------解决方案--------------------
确实需要加[]
------解决方案--------------------
引用:
try

string sql="delete from members where member_id in (?)";
OleDbConnection Conn = new OleDbConnection(strConnection); 
Conn.Open(); 
OleDbCommand command=new OleDbCommand(sql,Conn……

+1 
Accesssql语句参数化写法就该这样,并且你一定要按照列的顺序来添加参数。
------解决方案--------------------
Accesssql语句参数化写法就该这样,并且你一定要按照列的顺序来添加参数。
------解决方案--------------------
  有些数据库的语法是有差别的
------解决方案--------------------
语法用起来 确实有点不一样。
试试3楼的