2015-04-15 2 views
0


У меня есть проект ASP, который был размещен на godaddy. Существует несколько пользователей, которые будут регистрироваться в связи с тем, что проект ведет себя неловко, так как в нем нет входа в систему, обновление любых записей говорит о том, что он уже существует, но когда один пользователь использует его, он работает нормально. Кроме того, ошибка сервера, которую я понял, заключается в том, что существует многословное соединение с базой данных SQL, и она не была должным образом закрыта. Я должен сделать его многопользовательским.Как обрабатывать несколько соединений с проектом asp

SO есть ли конкретный код, который мне нужно написать

Если вам нужна часть кода будет рад поделиться, дайте мне знать.

Heres моя строка подключения в файле web.config:

<connectionStrings> 

<add name="dbconnection" connectionString="Data Source=SQLOLEDB;Server=184.168.47.15;Database=ab;UID=abc;PWD=abc" providerName="System.Data.SqlClient"/> 

</connectionStrings> 

Обновить код:

string strcon = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; 
    SqlConnection conn; 
    SqlCommand cmd; 
       conn = new SqlConnection(strcon); 
       conn.Open(); 
       if (UserId != txtenrolleecode.Text) 
       { 
        string sqlqry = "select * from Newenrollee where [email protected] "; 
        cmd = new SqlCommand(sqlqry, conn); 
        cmd.Parameters.AddWithValue("@enrollecode ", txtenrolleecode.Text); 
        da = new SqlDataAdapter(cmd); 
        da.Fill(dt); 

        if (dt.Rows.Count > 0) 
        { 
         ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Enrolee Code Already Exist !!');", true); 
         txtenrolleecode.Focus(); 
         return; 
        } 
       } 
       string enroleename = (txtfirstname.Text + " " + txtmiddle.Text + " " + txtsurname.Text).ToString(); 
       string spousename = (lblspouse.Text + " " + lblspousemiddlename.Text).ToString(); 
       cmd = new SqlCommand("Update Newenrollee set [email protected],HMOID= @HMOID,[email protected],Createdate=(CONVERT (datetime, @Createdate,103)),surname= @surname,firstname= @firstname,[email protected],[email protected],[email protected],martialstatus= @martialstatus,DOB= (CONVERT (datetime, @DOB,103)),age= @age,nationalid= @nationalid,bloodgroup= @bloodgroup,[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]", conn); 
       cmd.Parameters.AddWithValue("@Date", System.DateTime.Now); 
       cmd.Parameters.AddWithValue("@HMOID", txthmocode.Text); 
       cmd.Parameters.AddWithValue("@HMOName", ddhmoname.Text); 
       cmd.Parameters.AddWithValue("@Createdate", dtcreate.Text); 
       cmd.Parameters.AddWithValue("@enrollecode", txtenrolleecode.Text); 
       cmd.Parameters.AddWithValue("@surname", txtsurname.Text); 
       cmd.Parameters.AddWithValue("@firstname", txtfirstname.Text); 
       cmd.Parameters.AddWithValue("@middlename", txtmiddle.Text); 
       cmd.Parameters.AddWithValue("@designation", designation.Text); 
       cmd.Parameters.AddWithValue("@occupation", occupation.Text); 
       cmd.Parameters.AddWithValue("@martialstatus", cmbmartialstatus.Text); 
       cmd.Parameters.AddWithValue("@DOB", DOB.Text); 
       cmd.Parameters.AddWithValue("@age", txtage.Text); 
       cmd.Parameters.AddWithValue("@nationalid", nationalid.Text); 
       cmd.Parameters.AddWithValue("@bloodgroup", bloodgroup.Text); 
       cmd.Parameters.AddWithValue("@gl", txtgl.Text); 
       cmd.Parameters.AddWithValue("@sex", cmbsex.Text); 
       cmd.Parameters.AddWithValue("@address", txtaddress.Text); 
       cmd.Parameters.AddWithValue("@mob1", txtmob1.Text); 
       cmd.Parameters.AddWithValue("@mob2", txtmob2.Text);     

ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Records Updated Successfully')</script>"); 

       conn.Close(); 
       clear(); 

код довольно долго, как много полей, чтобы обновить сделал короткий, если я пропущу любой кронштейн простите пожалуйста

ошибка:

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

Трассировка стека:

[InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.] 
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +5364576 
     System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +146 
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +16 
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +94 
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +110 
System.Data.SqlClient.SqlConnection.Open() +96 
FAHIS_Data_Entry_Software_in_WEB.Master2.Page_Load(Object sender, EventArgs e) +375 
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 
System.Web.UI.Control.OnLoad(EventArgs e) +92 
System.Web.UI.Control.LoadRecursive() +54 
System.Web.UI.Control.LoadRecursive() +145 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772 
+1

Я бы вставлял код, чтобы продемонстрировать, как вы общаетесь с пользователями, и пример того, как ваши записи обновления и т.д. – horHAY

+0

@horHAY Я особо не обратил внимания на обработку пользователей. В основном это мой вопрос – mark

+1

Опубликовать код, в котором значение вставлено/обновлено в базе данных. – Sukanya

ответ

1

Первое, что я хотел бы сделать это, чтобы убедиться, что SqlConnection и SqlCommand объекты надлежащим образом утилизировать сразу после использования. Вы можете использовать заявление using, чтобы позаботиться об этом.

Это не имеет ничего общего с пулом соединений, но лучше использовать простой SqlDataReader, если вы хотите читать только данные только вперед.

Кроме того, откройте соединение непосредственно перед тем, как оно вам действительно понадобится.

using(var conn=new SqlConnection(yourConnString)) 
{ 
    using(var cmd=new SqlCommand(sqlQry,conn)) 
    { 
     conn.Open(); 
     using (IDataReader sqlDataReader = cmd.ExecuteReader()) 
     { 
     //read from sqlDataReader now 
     } 

    } 

} 

При таком подходе вам не нужно беспокоиться о закрытии соединения в явном виде, как она будет позаботилась в using заявлении.

+0

Где я могу открыть и закрыть соединение в вашем примере – mark

+0

@mark См. Мой обновленный ответ. – Shyju

Смежные вопросы