FineUI 官方论坛

标题: 多用户登陆时,数据库访问出错 [打印本页]

作者: rao    时间: 2014-4-8 14:30
标题: 多用户登陆时,数据库访问出错
本帖最后由 rao 于 2014-4-8 14:32 编辑

如果登陆的用户数少,就正常,超过100个同时在线,就出现问题了。
在登陆界面,需要判断用户名是否存在。代码:
public static DataTable select(string sql)      
{
            con="Data Source=172.1.0.0;Initial Catalog=ais09;User ID=sa; Password=123;Connect Timeout=8 ;";
            SqlConnection connection = new SqlConnection(con);
            SqlCommand cmd = new SqlCommand();
            connection.Open();
            try
            {
                cmd.Connection = connection;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                SqlDataAdapter dap = new SqlDataAdapter();
                dap.SelectCommand = cmd;
                DataTable dt = new DataTable();
                dap.Fill(dt);
                return dt;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                cmd.Dispose();
                connection.Close();
            }
        }
调用:DataTable dt =select("select * from userinfo where users='" + this.tbxaccount.Text.Trim() + "'");
正常结果返回是 dt.Rows.Count = 1,如果登陆的用户数少,就正常。
超过100个同时在线,就出现问题了,同样的查询条件,返回是 dt.Rows.Count = 0,数据库明明是有这个用户的,不明白为什么会查询不到数据。
请问是代码问题吗


作者: beingtop    时间: 2014-4-9 08:52
测一下,在线用户数达100以上时,此处代码执行的情况,是不是连接延时设置的太短了;
还用数据库有没有设置连接数的最大值;
再确认录入的用户名是否正确(大小写,数字区分全半角等)?
作者: rao    时间: 2014-4-9 11:43
beingtop 发表于 2014-4-9 08:52
测一下,在线用户数达100以上时,此处代码执行的情况,是不是连接延时设置的太短了;
还用数据库有没有设置 ...

准备加大时间,设置连接数,明天测试。
不过就不明白,如果超时、超过连接数,可能出现查询错误,但为什么没有错误提示,直接返回0值。
有点担心加大时间,设置连接数是否能解决问题。
作者: rao    时间: 2014-4-10 11:54
beingtop 发表于 2014-4-9 08:52
测一下,在线用户数达100以上时,此处代码执行的情况,是不是连接延时设置的太短了;
还用数据库有没有设置 ...

设置Connect Timeout=40;Max Pool Size=512,但还是出现同样的问题,
20人登陆都有时会出现这个问题。




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4