Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能把桌子做得更快?_C#_Sql Server - Fatal编程技术网

C# 我怎样才能把桌子做得更快?

C# 我怎样才能把桌子做得更快?,c#,sql-server,C#,Sql Server,我从我的SQL server中获取数据并将其放入一个表中,但是这个过程需要很长时间,因为有数千行数据。如何使此过程更快 我目前正在使用foreach循环向表中添加新行,即使处理20行数据,也需要2到3秒的时间。以下是我的代码,我如何改进它?(代码有点长,很抱歉,但我想展示整个过程,以便讲述整个故事) /* *返回bestbuy导出表的类 */ 类BestbuyExportTable { //主表的字段 私有数据表主表; //数据库连接字段 SqlConnection连接; /*初始化字段的构造函

我从我的SQL server中获取数据并将其放入一个表中,但是这个过程需要很长时间,因为有数千行数据。如何使此过程更快

我目前正在使用
foreach
循环向表中添加新行,即使处理20行数据,也需要2到3秒的时间。以下是我的代码,我如何改进它?(代码有点长,很抱歉,但我想展示整个过程,以便讲述整个故事)

/*
*返回bestbuy导出表的类
*/
类BestbuyExportTable
{
//主表的字段
私有数据表主表;
//数据库连接字段
SqlConnection连接;
/*初始化字段的构造函数*/
公共BestbuyExportTable()
{
mainTable=新数据表();
连接=新的SqlConnection(Properties.Settings.Default.ConnectionString);
}
/*真品->返回桌子*/
公共数据表getTable()
{
//重置表格以防万一
mainTable.Reset();
//向表中添加列
addColumn(主表,“SKU”);//1
addColumn(主表,“部门”);//2
addColumn(主表,“简短描述”);//3
addColumn(主表,“长描述”);//4
addColumn(主表,“UPC(主)”;//4
addColumn(主表,“UPC(附加)”;//5
addColumn(主表,“品牌名称”);//6
addColumn(主表,“型号”);//7
addColumn(主表,“制造商”);//8
addColumn(主表,“供应商”);//9
addColumn(主表,“供应商零件号”);//10
addColumn(主表,“单位成本”);//11
addColumn(主表,“零售价格”);//12
addColumn(主表,“尺寸(厘米)宽度(带方框)”;//13
addColumn(主表,“尺寸(厘米)高度(带方框)”;//14
addColumn(主表,“尺寸(CM)长度/深度(带方框)”;//15
addColumn(主表,“尺寸(KG)重量(带方框)”;//16
addColumn(主表,“尺寸(厘米)宽度(无框)”;//17
addColumn(主表,“尺寸(厘米)高度(无框)”;//18
addColumn(主表,“尺寸(CM)长度/深度(无框)”;//19
addColumn(主表,“尺寸(KG)重量(无框)”;//20
addColumn(主表,“法语兼容”);//21
addColumn(主表,“能源之星”);//22
addColumn(主表,“翻新”);//23
addColumn(主表,“软件平台”);//24
addColumn(主表,“街道日期”);//25
addColumn(主表,“需要序列号”);//26
addColumn(mainTable,“序列化格式”);//27
addColumn(主表,“支持制造商保修”);//28
addColumn(主表,“MNF保修服务”);//29
addColumn(主表,“MNF保修范围外的服务”);//30
addColumn(主表,“供应商联系人”);//31
addColumn(主表,“始终为RTV”);//32
addColumn(主表,“退回供应商缺陷日期”);//33
addColumn(主表,“返回供应商开箱天数”);//34
addColumn(主表,“产品保修天数”);//35
addColumn(主表,“产品保修范围”);//36
addColumn(主表,“延长零件保修”);//37
addColumn(mainTable,“返回限制”);//38
addColumn(主表,“禁运日期”);//39
addColumn(主表,“到期日期/批号”);//40
addColumn(主表,“保质期”);//41
addColumn(主表,“数据标志”);//42
addColumn(主表,“小于卡车装载”);//43
addColumn(主表,“SKU百思买”;//44
//用于将数据插入表的本地字段
数据行;
AltText alt=new AltText();//这只是一个获取产品alt文本的类
字符串[]skuList=getSKU();
//向每行添加数据
foreach(sku列表中的字符串sku)
{
字符串[]列表=获取数据(sku);
row=mainTable.NewRow();
行[0]=sku;//sku
第[1]行=“104”;//部门
行[2]=alt.getAlt(sku);//简短说明
行[3]=列表[0];//详细说明
行[4]=列表[9];//upc代码主
行[5]=列表[10];//upc代码附加
第[6]行=“Ashlin®”;//b
/*
 * A class that return bestbuy export table
 */
class BestbuyExportTable
{
    // field for the main table
    private DataTable mainTable;

    // field for database connection
    SqlConnection connection;

    /* constructor that initialize fields */
    public BestbuyExportTable()
    {
        mainTable = new DataTable();
        connection = new SqlConnection(Properties.Settings.Default.ConnectionString);
    }

    /* the real thing -> return the table !!! */
    public DataTable getTable()
    {
        // reset table just in case
        mainTable.Reset();

        // add column to table
        addColumn(mainTable, "SKU");                                                 // 1
        addColumn(mainTable, "DEPARTMENT");                                          // 2
        addColumn(mainTable, "SHORT DESCRIPTION");                                   // 3
        addColumn(mainTable, "LONG DESCRIPTION");                                    // 4
        addColumn(mainTable, "UPC (PRIMARY)");                                       // 4
        addColumn(mainTable, "UPC (ADDITIONAL)");                                    // 5
        addColumn(mainTable, "BRAND NAME");                                          // 6
        addColumn(mainTable, "MODEL NO");                                            // 7
        addColumn(mainTable, "MANUFACTURER");                                        // 8
        addColumn(mainTable, "SUPPLIER");                                            // 9
        addColumn(mainTable, "VENDOR PART NO");                                      // 10
        addColumn(mainTable, "UNIT COST");                                           // 11
        addColumn(mainTable, "RETAIL PRICE");                                        // 12
        addColumn(mainTable, "DIMENSION (CM) WIDTH (WITH BOX)");                     // 13
        addColumn(mainTable, "DIMENSION (CM) HEIGHT (WITH BOX)");                    // 14
        addColumn(mainTable, "DIMENSION (CM) LENGTH/DEPTH (WITH BOX)");              // 15
        addColumn(mainTable, "DIMENSION (KG) WEIGHT (WITH BOX)");                    // 16
        addColumn(mainTable, "DIMENSION (CM) WIDTH (NO BOX)");                       // 17
        addColumn(mainTable, "DIMENSION (CM) HEIGHT (NO BOX)");                      // 18
        addColumn(mainTable, "DIMENSION (CM) LENGTH/DEPTH (NO BOX)");                // 19
        addColumn(mainTable, "DIMENSION (KG) WEIGHT (NO BOX)");                      // 20
        addColumn(mainTable, "FRENCH COMPLIANT");                                    // 21
        addColumn(mainTable, "ENERGY STAR");                                         // 22
        addColumn(mainTable, "REFURBISHED");                                         // 23
        addColumn(mainTable, "SOFTWARE PLATFORM");                                   // 24
        addColumn(mainTable, "STREET DATE");                                         // 25
        addColumn(mainTable, "SERIAL NO REQUIRED");                                  // 26
        addColumn(mainTable, "SERIALIZED FORMAT");                                   // 27
        addColumn(mainTable, "SUPPORT MANUFACTURER WARRANTY");                       // 28
        addColumn(mainTable, "SERVICE UNDER MNF WARRANTY");                          // 29
        addColumn(mainTable, "SERVICE OUTSIDE MNF WARRANTY");                        // 30
        addColumn(mainTable, "SUPPLIER CONTACT");                                    // 31
        addColumn(mainTable, "ALWAYS RTV");                                          // 32
        addColumn(mainTable, "RETURN TO VENDOR DEFECTIVE DATE");                     // 33
        addColumn(mainTable, "RETURN TO VENDOR OPEN BOX DAYS");                      // 34
        addColumn(mainTable, "PRODUCT WARRANTY DAYS");                               // 35
        addColumn(mainTable, "PRODUCT WARRANTY COVERAGE");                           // 36
        addColumn(mainTable, "EXTENDED PARTS WARRANTY");                             // 37
        addColumn(mainTable, "RETURN RESTRICTIONS");                                 // 38
        addColumn(mainTable, "EMBARGO DATE");                                        // 39
        addColumn(mainTable, "EXPIRATION DATE/LOT NUMBER");                          // 40
        addColumn(mainTable, "SHELF LIFE");                                          // 41
        addColumn(mainTable, "DATA FLAG");                                           // 42
        addColumn(mainTable, "LESS THAN TRUCKLOAD");                                 // 43
        addColumn(mainTable, "SKU_BESTBUY_CA");                                      // 44

        // local field for inserting data to table
        DataRow row;
        AltText alt = new AltText();    // this is just a class that get the alt text of a product
        string[] skuList = getSKU();

        // add data to each row 
        foreach (string sku in skuList)
        {
            string[] list = getData(sku);
            row = mainTable.NewRow();

            row[0] = sku;                // sku
            row[1] = "104";              // department
            row[2] = alt.getAlt(sku);    // short description 
            row[3] = list[0];            // long description
            row[4] = list[9];            // upc code primary
            row[5] = list[10];           // upc code additional
            row[6] = "Ashlin®";          // brand name
            row[7] = list[1];            // model no
            row[8] = "Ashlin®";          // manufacturer
            row[9] = "234326";           // supplier
            row[10] = sku;               // vendor
            row[11] = (Math.Round((Convert.ToDouble(list[11]) * 0.5775), 2)).ToString();       // unit cost
            row[12] = (Math.Ceiling((Convert.ToDouble(list[11]) * 1.06)) - 0.01).ToString();   // retail price
            row[13] = list[2];                                                 // dimension width (with box)
            row[14] = list[3];                                                 // dimension height (with box)
            row[15] = list[4];                                                 // dimension length (with box)
            row[16] = (Convert.ToDouble(list[5]) / 1000).ToString();           // dimension weight (with box)
            row[17] = list[2];                                                 // dimension width (no box)
            row[18] = list[3];                                                 // dimension height (no box)
            row[19] = list[6];                                                 // dimension length (no box)
            row[20] = list[7];                                                 // dimension weight (no box)
            row[21] = 'Y';              // french compliant
            row[23] = 'N';              // refurbished
            row[24] = 'N';              // software platform
            row[26] = 'N';              // serial no required
            row[28] = 'N';              // support manufacturer warranty
            row[29] = 'Y';              // service under mnf warranty
            row[30] = 'N';              // service outside mnf warranty
            row[31] = 8884274546;       // supplier contact
            row[32] = 'N';              // always rtv
            row[33] = 0;                // return to vendor defective date
            row[34] = 0;                // return to vendor open box days
            row[35] = 365;              // peoduct warranty days
            row[44] = list[8];          // sku bestbuy ca

            mainTable.Rows.Add(row);
        }

        return mainTable;
    }

    /* method that add new column to table */
    private void addColumn(DataTable table, string name)
    {
        // set up column
        DataColumn column = new DataColumn();
        column.ColumnName = name;

        // add column to table
        table.Columns.Add(column);
    }

    /* a method that get all the sku that is active and sell on bestbuy*/
    private string[] getSKU()
    {
        // local field for storing data
        List<string> skuList = new List<string>();

        // connect to database and grab data
        SqlCommand command = new SqlCommand("SELECT SKU_Ashlin FROM master_SKU_Attributes WHERE SKU_BESTBUY_CA is NOT NULL AND Active = \'TRUE\' ORDER BY SKU_Ashlin;", connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            skuList.Add(reader.GetString(0));
        }
        connection.Close();

        return skuList.ToArray();
    }

    /* method that get the data from given sku */
    private string[] getData(string sku)
    {
        // local field for storing data
        List<string> list = new List<string>();
        DataTable table = new DataTable();

        // get the design code from sku
        string design = sku.Substring(0, sku.IndexOf('-'));

        // grab data from design
        // [0] for long description, [1] for model no, [2] for diemsion width (with box), [3] for dimension height (with box), [4] for dimension legth (with box), [5] for dimension weight (with box), [6] for dimension length (no box), [7] for dimension weight(no box)
        //                                                 and (no box)                       and (no box)
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT Extended_Description, Design_Service_Fashion_Name_BESTBUY_CA, Width_cm, Height_cm, Shippable_Depth_cm, Shippable_Weight_grams, Depth_cm, Weight_grams FROM master_Design_Attributes WHERE Design_Service_Code = \'" + design + "\';", connection);
        connection.Open();
        adapter.Fill(table);
        for (int i = 0; i <= 7; i++)
        {
            list.Add(table.Rows[0][i].ToString());
        }
        table.Reset();
        // [8] for SKU_BESTBUY_CA, [9] for upc code primary, [10] for upc code additional, [11] for unit cost and retail price
        adapter = new SqlDataAdapter("SELECT SKU_BESTBUY_CA, UPC_Code_9, UPC_Code_10, Base_Price FROM master_SKU_Attributes WHERE SKU_Ashlin = \'" + sku + "\';", connection);
        adapter.Fill(table);
        for (int i = 0; i <= 3; i++)
        {
            list.Add(table.Rows[0][i].ToString());
        }
        connection.Close();

        return list.ToArray();
      }
   }
}
using(var reader = command.ExecuteReader();)
{
    while (reader.Read())
        {
            skuList.Add(reader.GetString(0));
        }
}
connection.Dispose();
using(var adapter =  new SqlDataAdapter("SELECT Extended_Description, Design_Service_Fashion_Name_BESTBUY_CA, Width_cm, Height_cm, Shippable_Depth_cm, Shippable_Weight_grams, Depth_cm, Weight_grams FROM master_Design_Attributes WHERE Design_Service_Code = \'" + design + "\';", connection))
{
        connection.Open();
        adapter.Fill(table);
        for (int i = 0; i <= 7; i++)
        {
            list.Add(table.Rows[0][i].ToString());
        }
        table.Reset();
        adapter = new SqlDataAdapter("SELECT SKU_BESTBUY_CA, UPC_Code_9, UPC_Code_10, Base_Price FROM master_SKU_Attributes WHERE SKU_Ashlin = \'" + sku + "\';", connection);
        adapter.Fill(table);
        for (int i = 0; i <= 3; i++)
        {
            list.Add(table.Rows[0][i].ToString());
        }
}
        connection.Dispose();