2017-05-24 1 views
0

J'ai téléchargé une feuille Excel et inséré des données dans la base de données. Il existe deux noms de colonnes: financial year et financial quarter. Je veux insérer des données de web.config pour ces deux colonnes.Comment ajouter la valeur clé du fichier web.config à la base de données en téléchargeant une feuille Excel?

Voici mon web.config:

<appSettings> 
<add key="keyFinancialYr" value="2018-01-01" /> 

<add key="keyFinancialQtr" value="1" /> 
</appSettings> 

code derrière:

using (OleDbConnection excel_con = new OleDbConnection(conString)) 
    { 
     excel_con.Open(); 
     string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString(); 
     DataTable dtExcelData = new DataTable(); 

     //[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default. 
     dtExcelData.Columns.AddRange(new DataColumn[7] { new DataColumn("Id", typeof(int)), 
       new DataColumn("Banks", typeof(string)), 
       new DataColumn("Crop Loan", typeof(int)), 
       new DataColumn("Water Resources", typeof(decimal)), 
       new DataColumn("Farm Mechanisation", typeof(int)), 
        new DataColumn("Plantation & Horticulture", typeof(decimal)), 
      new DataColumn("Forestry & Wasteland Dev.", typeof(int)) 
      }); 

     using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "A2:G]", excel_con)) 
     { 
      oda.Fill(dtExcelData); 
     } 
     excel_con.Close(); 

     string consString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(consString)) 
     { 
      SqlCommand com = new SqlCommand("Truncate Table dbo.TestLDM ", con); 
      con.Open(); 
      bool Deleted = com.ExecuteNonQuery() > 0; 

      using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con)) 
      { 
       //Set the database table name 
       sqlBulkCopy.DestinationTableName = "dbo.TestLDM"; 

       //[OPTIONAL]: Map the Excel columns with that of the database table 
       sqlBulkCopy.ColumnMappings.Add("Id", "LDM_LBSMI1ID"); 
       sqlBulkCopy.ColumnMappings.Add("Banks", "BankName"); 
       sqlBulkCopy.ColumnMappings.Add("Crop Loan", "PCropLoanNo"); 
       sqlBulkCopy.ColumnMappings.Add("Water Resources", "PCropLoanAmt"); 
       sqlBulkCopy.ColumnMappings.Add("Farm Mechanisation", "PTermLoanWaterRNo"); 
       sqlBulkCopy.ColumnMappings.Add("Plantation & Horticulture", "PTermLoanWaterRAmt"); 
       sqlBulkCopy.ColumnMappings.Add("Forestry & Wasteland Dev.", "PTermLoanFarmMechanisationNo"); 

       sqlBulkCopy.WriteToServer(dtExcelData); 
       con.Close(); 
      } 
     } 

S'il vous plaît me aider à résoudre ce problème.

+0

Que voulez-vous faire? Vous parlez du fichier web.config mais je n'ai vu aucun de vos codes appelant web.config dans votre code. –

+0

Je veux insérer ces deux valeurs table de base de données. et j'ai utilisé la chaîne de connexion de web.config dans mon code derrière. string consString = ConfigurationManager.ConnectionStrings ["conn"]. ConnectionString; – HAPPYsukh

Répondre

0

Ce insérera l'enregistrement de votre AppsetingValue:

string consString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 
     static String AppSetting1=ConfigurationManager.AppSettings["keyFinancialYr"].ToString(); 
     static String AppSetting2=ConfigurationManager.AppSettings["keyFinancialQtr"].ToString(); 
     String QueryStr = "insert into yourTable(Col1,Col2)values('" + AppSetting1 + "','" + AppSetting2 + "')"; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      ExecuteQuery(consString,QueryStr); 
     } 

     public int ExecuteQuery(String connectionString,string query) 
     { 
      using (SqlConnection con = new SqlConnection(connectionString)) 
      { 
       con.Open(); 
       using (SqlCommand cmd = con.CreateCommand()) 
       { 
        cmd.CommandText = query; 
        cmd.CommandType = CommandType.Text; 
        int result = cmd.ExecuteNonQuery(); 
        return result; 
       } 
      } 
     } 

Si votre colonne de table keyFinancialQtr est entier, vous pouvez analyser le AppSetting2 int *. Changez simplement col1, col2 en tant que nom de colonne réel.

+0

juste ajouter une référence en utilisant System.Configuration; –