簡體   English   中英

后端使用SQL Server 2008的C#.Net應用程序上的TCP錯誤

[英]TCP error on a C#.Net application with SQL Server 2008 on the backend

我已經使用C#、. Net和SQL Server作為數據庫工具制作了一個應用程序。

今天,我在多用戶環境中運行它。 我將SQL Server托管在服務器上,並在客戶端計算機上安裝了該應用程序。 最初它工作正常,但一段時間后出現錯誤消息。 錯誤的屏幕截圖如下。

在此處輸入圖片說明

我使用此代碼創建了連接字符串-

  class SqlConnDAC
    {
         public static SqlConnection CreateConn()
          {
           SqlConnection con = new SqlConnection(@"Data Source=XXX.XXX.X.XXX\SQLEXPRESS;Initial    Catalog=TrulyDB;User ID=sa;Password=XXXXXXXX");
           return con;
           }
     }

我使用以下代碼將數據插入到OCF表中-

        public string OCF_EntryDB_Commerce(OCF_BO formDb)
    {
        try
        {
            string intOCF=formDb.OCF_Cont_No;

            SqlConnection con = SqlConnDAC.CreateConn();
            SqlDataAdapter sda = new SqlDataAdapter("select * from OCF_Commerce", con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "OCF_Commerce");
            DataTable dt = ds.Tables["OCF_Commerce"];
            DataRow dr = dt.NewRow();
            dr[0] = formDb.OCF_Cont_No;
            dr[1] = formDb.Customer_Name;
            dr[2] = formDb.Order_Cont_Type;
            dr[3] = formDb.Book_No;
            dr[4] = formDb.Area_To_Be_Served;
            dr[5] = Convert.ToInt32(formDb.No_of_Floor);
            dr[6] = formDb.Type_Of_Premisses;
            dr[7] = formDb.Phone_Number;
            dr[8] = formDb.Email_ID;
            dr[9] = formDb.Adress;
            dr[10] = formDb.Adress_To_be_serverd;
            dr[11] = Convert.ToInt32(formDb.Cont_Value);
            dr[12] = Convert.ToInt32(formDb.Cont_Tax);
            dr[13] = Convert.ToInt32(formDb.Total);
            dr[14] = formDb.Cont_Date;
            dr[15] = formDb.Cont_Month;
            dr[16] = formDb.Cont_Year;
            dr[17] = formDb.Service_Start_Date;
            dr[18] = formDb.Service_Start_Month;
            dr[19] = formDb.Service_Start_Year;
            dr[20] = formDb.Cont_Period_From;
            dr[21] = formDb.Cont_Period_From_MM;
            dr[22] = formDb.Cont_Period_From_YY;
            dr[23] = formDb.Cont_Period_To;
            dr[24] = formDb.Cont_Period_To_MM;
            dr[25] = formDb.Cont_Period_To_YY;
            dr[26] = formDb.TermsOfPayments;
            if (formDb.TypeOfSite == "SingleSite")
            {
               intOCF = formDb.OCF_Cont_No;
            }
            else if (formDb.TypeOfSite == "MultipleSite")
            {
                intOCF = GenerateInt_OCF(formDb.OCF_Cont_No);

            }

            dr[27] = intOCF;
            dr[28] = formDb.OperatingBranch;

            OCF_Int_ID.internalOCF = intOCF;
              dt.Rows.Add(dr);
            SqlCommandBuilder sbil = new SqlCommandBuilder(sda);
            sda.Update(dt);

            return ("\nDone - and internal OCF number for "+formDb.Adress_To_be_serverd+" ="+intOCF+" \n");
       }
  }

我的第一個想法是您遇到了網絡問題。 但是還有其他原因,例如SQL請求過多等。請查看Microsoft technet

就像有關SQL的一些建議可以幫助您省去一番煩惱一樣:您正在使用select *,然后按照它們返回的順序來讀取字段。如果您計划對產品進行任何升級,請查看將值取回使用字段名稱,這樣,當您添加或刪除或更改字段時,代碼不會中斷。 還有一個問題,那就是select *必須命中master數據庫以獲取字段列表,這對性能影響不大,但是如果master忙於其中的很多事情,它可能會成為瓶頸,或者更糟糕的是仍然被鎖定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM