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();

最后一条语句就提示超时。
请问怎么解决。
展开
 我来答
OldCat_先生
2012-11-06 · TA获得超过274个赞
知道小有建树答主
回答量:144
采纳率:33%
帮助的人:48.1万
展开全部
问题是 你在if else 下面执行更新之前没有关闭SqlDataReader 吧。
rm...i@163.com
2012-11-06
知道答主
回答量:27
采纳率:0%
帮助的人:14.8万
展开全部
定义SqlDataReader shuju2时使用using (SqlDataReader shuju2=shuju1.ExecuteReader()){},
追问
是连接忘了close
追答
using块,在执行完后会自动dispose的,比close可靠,如果你的这个语句放在一个循环中,你可以看看close后的效果,有时候还是会报异常的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tu...i@163.com
2012-11-06
知道答主
回答量:1
采纳率:0%
帮助的人:1571
展开全部
弱弱的问一句,你那条update语句能在数据库中执行么
追问
可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式