执行到 oc.Parameters.Add(projectnumberparameter); 这句的时候后面的就不会执行了,直接到了catch中 本帖最后由 jiangsheng 于 2010-04-29 03:55:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去掉@,如:SqlParameter projectnumberparameter = new SqlParameter("ProjectID", SqlDbType.UniqueIdentifier, 32);还有:oc.Parameters.Add(projectnumberparameter);oc.CommandType = CommandType.StoredProcedure; foreach (string procedure in al) { oc.CommandText = procedure; i = oc.ExecuteNonQuery(); if (i < 0) tran.Rollback(); else tran.Commit(); } catch { i = -1; tran.Rollback(); } 因为你都是一个参数,那就只用加一次参数就可以了。oc.Parameters.Add(projectnumberparameter);oc.CommandType = CommandType.StoredProcedure;放在for的外面,而不是里面。还有你的if少了else ,应该是:if (i < 0) tran.Rollback(); else tran.Commit(); 谢谢楼上的回答,问题不在这,问题是SqlParameter projectnumberparameter = new SqlParameter("@ProjectID", SqlDbType.UniqueIdentifier, 32);应该改成OleDbParameter projectnumberparameter = new OleDbParameter("@ProjectID", System.Data.OleDb.OleDbType.Guid, 32);因为oledbcommand不能接收SqlDbType的值,只能是oledbtype的值 调试: 1. catch 一下,显示出具体错误. 2.跟踪状态值 C++转C#,遇到一些问题 关于OleDbDataReader类读数据库请教 关于 AspNetPager分页 请问如何计算文本相似度? 很简单的问题,请高手指点一下!急! <请教大虾> 关于Windows消息值拦截... 如何用代码控制ADSL拨号? VS2005中文版DVD版镜像,请大家一起加快速度啊 急!datagrid的问题,在线等 如何做逻辑或判断? VS2005能否增量编译? 请教OleDbParameter 在update 中的格式
SqlParameter projectnumberparameter = new SqlParameter("ProjectID", SqlDbType.UniqueIdentifier, 32);还有:
oc.Parameters.Add(projectnumberparameter);
oc.CommandType = CommandType.StoredProcedure;
foreach (string procedure in al)
{
oc.CommandText = procedure;
i = oc.ExecuteNonQuery();
if (i < 0)
tran.Rollback();
else
tran.Commit(); }
catch
{
i = -1;
tran.Rollback();
}
oc.Parameters.Add(projectnumberparameter);
oc.CommandType = CommandType.StoredProcedure;
放在for的外面,而不是里面。
还有你的if少了else ,应该是:
if (i < 0)
tran.Rollback();
else
tran.Commit();
应该改成OleDbParameter projectnumberparameter = new OleDbParameter("@ProjectID", System.Data.OleDb.OleDbType.Guid, 32);
因为oledbcommand不能接收SqlDbType的值,只能是oledbtype的值