C#-关于这个编码的几个问题

本文关键字:几个问题 编码 于这个 C#- | 更新日期: 2023-09-27 18:19:32

1)它加载速度非常慢,需要20多秒,但它确实加载了数据库。这正常吗?

2) 我把"你好"answers"再见"的响应放在测试它是否连接良好。它写你好和再见无数次像你好你好你好你好。。。再见再见。。。这正常吗?我想这与问题3有关。

3) 当我注释掉catch(exception)时,我会收到一个错误,说InvalidOperationException"timeout expired"。我认为catch适合捕捉那些偶尔出现的错误,而不是一遍又一遍地捕捉同一个错误。我认为这意味着出了什么问题?

    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection Conn = new SqlConnection("Data Source=aserver;Initial Catalog=KennyCust;Persist Security Info=True;user id=sa;pwd=qwerty01");
        SqlDataReader rdr = null;
        string commandString = "SELECT * FROM MainDB";
        string commandString2 = "SELECT * From DetailDB";
        try
        {
            Conn.Open();
            SqlCommand Cmd = new SqlCommand(commandString, Conn);
            SqlDataAdapter sdp = new SqlDataAdapter(Cmd);
            DataSet ds = new DataSet();
            if (Conn != null)
            {
                Response.Write("Hello");
            }
            ds.Clear();
            sdp.Fill(ds);
            MasterCust.DataSource = ds.Tables[0];
            MasterCust.DataBind();
        }
        catch (Exception)
        {
        }
        finally
        {
            if (rdr != null)
            {
                rdr.Close();
            }
            if (Conn != null)
            {
                Conn.Close();
                if (Conn != null)
                {
                    Response.Write("Bye");
                }
            }
        }

C#-关于这个编码的几个问题

这就是为什么仅仅"吞下"异常通常不是一个好主意。很可能是一个严重的问题导致您的大多数数据库请求超时,而不是得到一个有用的错误,您可以用来确定问题是什么,您只是让用户抱怨系统加载页面需要很长时间。

真正的问题可能在于数据库表结构或连接,或者您的数据太多,以至于执行"SELECT*FROM…"会影响您的性能。

关于多个"hello"answers"bye"消息,显然是某些原因导致Page_Load被多次调用。如果此代码位于控件上,并且您正在将该控件的多个实例添加到页面中,则可能会发生这种情况。我也见过这种情况在其他情况下发生,但我记不清具体是什么了。

听起来您的查询超时了(默认超时为30秒),但您正在用空的catch块吞下异常。检查数据集的大小或进行较小的查询(从maindb中选择前100*)

在表单加载中,不如只在内部执行SQL调用

if(!(Page.IsPostback))
{
  //Do SQL in here
}

这样SQL就不会在每次刷新页面时都运行。