我想往数据库里加东西,比如100个记录,我逐条检测是否存在该记录(并为将这些记录加入SQL)当小于150时可以,再大的话就错误。错误提示::
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。什么意思啊,是那的原因啊。代码如下:for(j=1;j<=i;j++)
{
if(cunzaibh(zhshbhshz))//检测是否存在该编号;
{
MessageBox.Show("编号已经存在!");
return;
}
zhshbhshz++;
}
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。什么意思啊,是那的原因啊。代码如下:for(j=1;j<=i;j++)
{
if(cunzaibh(zhshbhshz))//检测是否存在该编号;
{
MessageBox.Show("编号已经存在!");
return;
}
zhshbhshz++;
}
比如你的表是这样
name num
zhang 001
当你检查数据库中是否存在这条数据是如果每条数据去做比较的话很慢的
用datareader就比较好了
把zhang,001作为查询条件,
if(DataReader.Read())
{
MessageBox.Show("记录已经存在!");
}
//判断是否存在该编号;
private bool cunzaibh(long bhshz)
{
string sql ="select EEBHShZ from ZBShSh where EEBHShZ='"+bhshz +"' ";
string str=CanShu.getstr.getconnectstring();
SqlConnection con= new SqlConnection(str);
SqlCommand com = new SqlCommand (sql, con);
con.Open ();
try
{
SqlDataReader reader=com.ExecuteReader();
if(reader.Read())
return true;
else
return false;
reader.Close();
}
catch
{
throw;
}
finally
{
con.Close();
}
}
2. 做循环 调用cunzaibh函数并没有问题,应该是不会出错的,问题可能在其他代码上,建议监视
1、ExecuteScalar是不错的选择,
2、或者土一点,先获得新增记录的编号,然后以此编号为查询条件进行查询,如果查询得到记录的个数>0,则存在,否则不存在。
3、建立存储过程,在存储过程判断新纪录的编号是否存在
我还是换成ExecuteScalar吧,估计好点。谢谢各位帮忙了!!