为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大大帮我看看这样写的数据库连接代码是否有问题?

哪位大大帮我看看这样写的数据库连接代码是否有问题?

凤凰求蛊 2018-12-06 13:27:44
static private SqlCommand cmd; private static SqlConnection conn; static private readonly string connString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; //从web.config获取数据库连接字符串 public static SqlConnection Conn { get { if (conn == null) { conn = new SqlConnection(connString); conn.Open(); } else if (conn.State == ConnectionState.Broken) { conn.Close(); conn.Open(); } else if (conn.State == ConnectionState.Closed) { conn.Open(); } return conn; } } static SqlHelpers() { cmd = new SqlCommand(); cmd.Connection = Conn; cmd.CommandType = CommandType.StoredProcedure; } /// <summary>通过存储过程,返回DataTable结果集 /// </summary> /// <param name="parName">存储过程名</param> /// <param name="pars">存储过程参数</param> /// <returns></returns> public DataTable GetDataTable(string parName, SqlParameter[] pars) { try { cmd.CommandText = parName; if (pars != null && pars.Length > 0) { foreach (SqlParameter item in pars) { cmd.Parameters.Add(item); } } DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); cmd.Parameters.Clear(); return dt; } catch (Exception) { cmd.Parameters.Clear(); return null; } } 我自己弄的网站,数据库连接是这么写的,但是我测试的时候,同时并发人数达到200人的时候,就会出现找不到数据库中的某个字段,但是重新上传一下dll文件就能找到了!我怀疑是数据库连接语句的问题,菜鸟求教……
查看完整描述

5 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

SqlConnection是稀缺资源,用完立即要关闭,定义为static会带来问题。

通常的做法是放在using中,比如:

using(SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();
}
查看完整回答
反对 回复 2019-01-21
?
翻阅古今

TA贡献1780条经验 获得超5个赞

你用什么测试软件的?

查看完整回答
反对 回复 2019-01-21
?
心有法竹

TA贡献1866条经验 获得超5个赞

用的VS上自带的

查看完整回答
反对 回复 2019-01-21
?
长风秋雁

TA贡献1757条经验 获得超7个赞

应该是static引起的,建议如2楼那样去做!如果返回SqlDataReder就不要用using了

查看完整回答
反对 回复 2019-01-21
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

@dudu: 恩,我刚问过我老师,他说多个线程调用一个对象就会报错,谢谢你们啊

查看完整回答
反对 回复 2019-01-21
  • 5 回答
  • 0 关注
  • 327 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信