C# 用IF判断数据库是否有相同数据后,在执行其他SQL语句就超时。
在C#里面用sqldataread执行判断数据库是否有相同记录,如果没有,就插入需要写入的数据,然后退出IF,继续执行下面的语句,到这里没有任何问题。但是IF语句如果判断...
在C# 里面用sqldataread执行判断数据库是否有相同记录,如果没有,就插入需要写入的数据,然后退出IF,继续执行下面的语句,到这里没有任何问题。
但是IF语句如果判断有数据,就出现提示信息,然后退出IF,在执行下面的语句,这个时候,下面的SQL语句就提示超时,请问怎么解决。
string shuju = "select * from kouxi where riqi='"+dateTimePicker1.Text.ToString()+"'";
SqlCommand shuju1 = new SqlCommand(shuju, shujupanduan1);
SqlDataReader shuju2 = shuju1.ExecuteReader();
shuju2.Read();
if (shuju2.HasRows == false)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
string cmd = "insert into kouxi(riqi,cusid,CurrentBalance) values " + "('" + dateTimePicker1.Text.ToString() + "','" + dt.Rows[i]["CusID"].ToString() + "','" + dt.Rows[i]["CurrentBalance"].ToString() + "')";
SqlCommand cmd1 = new SqlCommand(cmd, xc1); cmd1.ExecuteNonQuery();
}
}
else
{
/ MessageBox.Show("已存在'"+dateTimePicker1.Text.ToString()+"'的数据,将以第一次获取的数据为标准计算","提示信息");
}
string kouxiqt = "update kouxi "
+ "set salesname=b.salesname,cusjc=b.cusjc,cusname=b.cusname,xse_xy=b.MonSalesAmount1*b.drXYXS"
+ " from kouxi a left join jichushuju b on a.cusid=b.cusid"
+ " where a.riqi=b.riqi";
SqlCommand kouxiqt1 = new SqlCommand(kouxiqt,xc1);
kouxiqt1.ExecuteNonQuery();
最后一条语句就提示超时。
请问怎么解决。 展开
但是IF语句如果判断有数据,就出现提示信息,然后退出IF,在执行下面的语句,这个时候,下面的SQL语句就提示超时,请问怎么解决。
string shuju = "select * from kouxi where riqi='"+dateTimePicker1.Text.ToString()+"'";
SqlCommand shuju1 = new SqlCommand(shuju, shujupanduan1);
SqlDataReader shuju2 = shuju1.ExecuteReader();
shuju2.Read();
if (shuju2.HasRows == false)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
string cmd = "insert into kouxi(riqi,cusid,CurrentBalance) values " + "('" + dateTimePicker1.Text.ToString() + "','" + dt.Rows[i]["CusID"].ToString() + "','" + dt.Rows[i]["CurrentBalance"].ToString() + "')";
SqlCommand cmd1 = new SqlCommand(cmd, xc1); cmd1.ExecuteNonQuery();
}
}
else
{
/ MessageBox.Show("已存在'"+dateTimePicker1.Text.ToString()+"'的数据,将以第一次获取的数据为标准计算","提示信息");
}
string kouxiqt = "update kouxi "
+ "set salesname=b.salesname,cusjc=b.cusjc,cusname=b.cusname,xse_xy=b.MonSalesAmount1*b.drXYXS"
+ " from kouxi a left join jichushuju b on a.cusid=b.cusid"
+ " where a.riqi=b.riqi";
SqlCommand kouxiqt1 = new SqlCommand(kouxiqt,xc1);
kouxiqt1.ExecuteNonQuery();
最后一条语句就提示超时。
请问怎么解决。 展开
3个回答
展开全部
定义SqlDataReader shuju2时使用using (SqlDataReader shuju2=shuju1.ExecuteReader()){},
追问
是连接忘了close
追答
using块,在执行完后会自动dispose的,比close可靠,如果你的这个语句放在一个循环中,你可以看看close后的效果,有时候还是会报异常的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
弱弱的问一句,你那条update语句能在数据库中执行么
追问
可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询