public bool RunProcTrans(string ParentSql, string ChildSql, DataTable dt, string ChildColumn, bool flag)
{
bool b = false; SqlConnection Conn; Conn = new SqlConnection(ConnStr); Conn.Open(); SqlCommand cmd = CreateCmd(ParentSql, Conn); SqlTransaction trans = Conn.BeginTransaction(); //开启事务 cmd.Transaction = trans; try
{
SqlDataReader dr = cmd.ExecuteReader(); if (flag == true)
{
if (dr.Read())
{
string str = dr[0].ToString();
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i][ChildColumn] = int.Parse(str);
}
}
} dr.Close(); dr.Dispose(); SqlDataAdapter Da; Da = CreateDa(ChildSql); SqlCommandBuilder scmd = new SqlCommandBuilder(Da);
try
{
lock (this)
{
Da.Update(dt);
} dt.AcceptChanges(); trans.Commit();
}
catch (Exception Ex)
{
trans.Rollback();
}
}
catch
{
trans.Rollback();
}
finally
{
Dispose(Conn);
}
return b;
}
以上的代码在以前执行时没有问题,自从数据库两表之间建了关系了就出现
超时时间已到。在操作完成之前超时时间已过或服务器未响应。
这种错误,把关系去掉就又正常了,请各位帮我看看是不是代码出了问题
{
bool b = false; SqlConnection Conn; Conn = new SqlConnection(ConnStr); Conn.Open(); SqlCommand cmd = CreateCmd(ParentSql, Conn); SqlTransaction trans = Conn.BeginTransaction(); //开启事务 cmd.Transaction = trans; try
{
SqlDataReader dr = cmd.ExecuteReader(); if (flag == true)
{
if (dr.Read())
{
string str = dr[0].ToString();
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i][ChildColumn] = int.Parse(str);
}
}
} dr.Close(); dr.Dispose(); SqlDataAdapter Da; Da = CreateDa(ChildSql); SqlCommandBuilder scmd = new SqlCommandBuilder(Da);
try
{
lock (this)
{
Da.Update(dt);
} dt.AcceptChanges(); trans.Commit();
}
catch (Exception Ex)
{
trans.Rollback();
}
}
catch
{
trans.Rollback();
}
finally
{
Dispose(Conn);
}
return b;
}
以上的代码在以前执行时没有问题,自从数据库两表之间建了关系了就出现
超时时间已到。在操作完成之前超时时间已过或服务器未响应。
这种错误,把关系去掉就又正常了,请各位帮我看看是不是代码出了问题
看lz的代码应该没问题 , 你看下sql远程连接是否开启,防火墙是否关闭,还有windowns防火墙是否开着呢,
次表里是有outstorebill_Detail,outstorebillId等字段插入时和更新时只要不更新outstorebillid这个字段就不会出错
你能说明下这怎么测吗,我测早就测过了,到了da.update(dt)那儿出的问题,这能看的出什么问题
估计是你的表有问题update我试过,只能操作一个表,并且必须是表才行,视图也不行。update包含了删除,增加,修改等功能,可以一起更新,但只能对一个基础表更新。你可以试试用触发器。update是更新不了两个表的。也更新不了视图的。最佳解决办法是更新一个表,然后在SQL里面加一个触发器,控制另一个表的更新。
删除同理update方法不是SQL里面的update方法,所以为添加,删除,更新单独做程序出来是应该的。