Friday, February 6, 2015

Dynamically create insert statement to insert records of DataTable into DataBase table


Useful when exporting the records from one Database(Oracle) to another Database(Oracle) table .


 using Oracle.DataAccess.Client;  

public static void Create_ORA_Entry(string connStr, DataTable dataTable, string tableName)  
     {  
       DataTable dt_dest = Db.ExecuteDataTable_ORACLE(connStr, "select * from tableName where [column_ID]=" + dataTable.Rows[0]["COLUMN_ID"].ToString(), "tableName");  
       if (dt_dest.Rows.Count > 0)  
       {  
         return; //record already exists! no action taken.   
       }  
       string columns = string.Join(","  
       , dataTable.Columns.Cast<DataColumn>().Where(c => dt_dest.Columns.Contains(c.ColumnName)).Select(c => c.ColumnName));  
       string values = string.Join(","  
       , dataTable.Columns.Cast<DataColumn>().Where(c => dt_dest.Columns.Contains(c.ColumnName)).Select(c => string.Format(":{0}", c.ColumnName)));  
       String sqlCommandInsert = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", tableName, columns, values);  
       using (var con = new OracleConnection(connStr))  
       using (var cmd = new OracleCommand(sqlCommandInsert, con))  
       {  
         con.Open();  
         foreach (DataRow row in dataTable.Rows)  
         {  
           cmd.Parameters.Clear();  
           foreach (DataColumn col in dataTable.Columns.Cast<DataColumn>().Where(c=>dt_dest.Columns.Contains(c.ColumnName)))  
           {  
             cmd.Parameters.Add(col.ColumnName, row[col]);  
           }  
           int inserted = cmd.ExecuteNonQuery();  
         }  
       }  
     }  


public static DataTable ExecuteDataTable_ORACLE(string dataConnectionString,  
               string sql, string tableName)  
     {  
       OracleDataAdapter oraAD = new OracleDataAdapter(sql, dataConnectionString);  
       DataTable dt = new DataTable(tableName);  
       try  
       {  
         oraAD.Fill(dt);  
       }  
       catch (Exception ex)  
       {  
         throw ex;  
       }  
       finally  
       {  
         oraAD.Dispose();  
       }  
       return dt;  
     }  




No comments:

Post a Comment

Code Formater

Paste Here Your Source Code
Source Code Formatting Options
1) Convert Tab into Space :
2) Need Line Code Numbering :
3) Remove blank lines :
4) Embeded styles / Stylesheet :
5) Code Block Width :
6) Code Block Height :
7) Alternative Background :
Copy Formatted Source Code
 
Preview Of Formatted Code