C Sharp ile Veritabanından alınan verileri başka bir tabloya insert etmek
#1
Bu işlemi Excel'de CopyFromRecordSet kullanarak 19 dk
Acces'de Satır satır insert yöntemi ile 39 dk (Bu programda CopyFromRecordSet veya BulkCopy benzeri bir yöntem bulamadım)
C#Sharpta 12 sürdü.

Bu kod bloğu Etada bulunan şirketlerin Bordro Sicil ve Kimlikler tablosunu JOIN'leyip Yine aynı veritabanına eklenmiş bir Veritabanındaki Tabloya bu verileri INSERT eder.

Kodun 1. Adımı:
Yeni oluşturulan ve tüm Sicil Bilgilerini içeren Tablomuzda daha önce alınan veriler silinir. Böylece insan kaynakları son sicil bilgilerinin güncelklenmiş halini görebilir.

Etada bulunan EtaMaster - SIRKET veritabanında dönülüyor. Böylece tüm şirketlerin BORSICIL ve KIMLIKLER tabloları JOIN edilebilecek.

JOIN edilen bu tablolar bir DataTable'a aktarılıyor. Yeni oluşturulan ve tüm Sicil Bilgilerini içeren tabloya inset ediliyor.

Bu DataTable BulkCopy yöntemi ile


C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Diagnostics;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12.  
  13. namespace EtaSicilCek
  14. {
  15. public partial class Form1 : Form
  16. {
  17. public Form1()
  18. {
  19. InitializeComponent();
  20. }
  21.  
  22. #region Global Connections
  23. SqlConnection cnnETAMASTER1 = new SqlConnection(@"Server=IKSERVER\ETA;Database=ETA_MASTER;UID=sa;PWD=eta");
  24. SqlConnection cnnETAMASTER2 = new SqlConnection(@"Server=IKSERVER\ETA;Database=ETA_MASTER;UID=sa;PWD=eta");
  25. #endregion
  26.  
  27. Stopwatch stpW = new Stopwatch();
  28.  
  29. private void btnEtaSicilAl_Click(object sender, EventArgs e)
  30. {
  31. timer1.Start();
  32. stpW.Start();
  33.  
  34. #region Bağlantılar Açılıyor
  35. if (cnnETAMASTER1.State == ConnectionState.Closed) cnnETAMASTER1.Open();
  36. if (cnnETAMASTER2.State == ConnectionState.Closed) cnnETAMASTER2.Open();
  37. #endregion
  38.  
  39. #region EtaSicilSQLCalis Veritabanını boşalt
  40. SqlCommand cmd = new SqlCommand("Truncate Table [TumEtaSicilBilgileri].dbo.EtaSicilSQL", cnnETAMASTER1);
  41. cmd.ExecuteNonQuery();
  42. cmd.Dispose();
  43. #endregion
  44.  
  45. #region Eta Şirketlerinde Dön
  46. cmd = new SqlCommand("Select * From [ETA_MASTER].dbo.SIRKET Order By SIRDONEM ASC", cnnETAMASTER1);
  47. //cmd = new SqlCommand("Select * From [ETA_MASTER].dbo.SIRKET Order By SIRKOD", cnnETAMASTER1);
  48. //cmd = new SqlCommand("Select * From [ETA_MASTER].dbo.SIRKET Where SIRDBNAME = 'ETA_03_2001' Order By SIRKOD", cnnETAMASTER1);
  49. SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  50. if (dr.HasRows)
  51. {
  52. while (dr.Read())
  53. {
  54. string VeriTabani = dr["SIRDBNAME"].ToString();
  55.  
  56. #region Update Metni Hazırla, Ayrı bir connection kullanarak Update Et
  57. StringBuilder CreateUpdate = new StringBuilder();
  58. CreateUpdate.Append("Update [");
  59. CreateUpdate.Append(VeriTabani);
  60. CreateUpdate.Append("].[dbo].[BORSICIL] SET BORSCLMUHHESKOD = '");
  61. CreateUpdate.Append(VeriTabani);
  62. CreateUpdate.Append("', BORSCLOKOD5 = '");
  63. CreateUpdate.Append(dr["SIROZELKOD3"]);
  64. CreateUpdate.Append("'");
  65.  
  66. #region Bu Update işlemi için ayrı bir Connection açtım
  67. SqlCommand cmdUpdate = new SqlCommand(CreateUpdate.ToString(), cnnETAMASTER2);
  68. cmdUpdate.ExecuteNonQuery();
  69. cmdUpdate.Dispose();
  70. #endregion
  71.  
  72. #endregion
  73.  
  74. #region Select - InnerJoin Metni hazırla
  75. StringBuilder SelectInnerJoin = new StringBuilder();
  76. SelectInnerJoin.Append("SELECT [");
  77. SelectInnerJoin.Append(VeriTabani);
  78. SelectInnerJoin.Append("].[dbo].[BORSICIL].*, [");
  79. SelectInnerJoin.Append(VeriTabani);
  80. SelectInnerJoin.Append("].[dbo].[KIMLIKLER].* FROM [");
  81. SelectInnerJoin.Append(VeriTabani);
  82. SelectInnerJoin.Append("].[dbo].BORSICIL INNER JOIN [");
  83. SelectInnerJoin.Append(VeriTabani);
  84. SelectInnerJoin.Append("].[dbo].KIMLIKLER ON [");
  85. SelectInnerJoin.Append(VeriTabani);
  86. SelectInnerJoin.Append("].[dbo].BORSICIL.BORSCLKOD = [");
  87. SelectInnerJoin.Append(VeriTabani);
  88. SelectInnerJoin.Append("].[dbo].KIMLIKLER.KIMKOD ORDER BY [");
  89. SelectInnerJoin.Append(VeriTabani);
  90. SelectInnerJoin.Append("].[dbo].[BORSICIL].BORSCLTCKIMLIKNO;");
  91.  
  92. #region Hazırlanan Select - InnerJoin Metnini BulkCopy ile Insert et.
  93. SqlDataAdapter adp = new SqlDataAdapter(SelectInnerJoin.ToString(), cnnETAMASTER2);
  94. SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adp);
  95. DataTable dt = new DataTable();
  96. adp.Fill(dt);
  97. adp.Dispose();
  98.  
  99. SqlBulkCopy blkCopy = new SqlBulkCopy(cnnETAMASTER2);
  100. blkCopy.DestinationTableName = "[TumEtaSicilBilgileri].dbo.[EtaSicilSQL]";
  101. try
  102. {
  103. blkCopy.WriteToServer(dt);
  104. }
  105. catch
  106. {
  107. }
  108. dt.Dispose();
  109. blkCopy.Close();
  110. #endregion
  111.  
  112. #endregion
  113.  
  114. }
  115. }
  116. #endregion
  117.  
  118. cnnETAMASTER1.Close();
  119. cnnETAMASTER2.Close();
  120. dr.Close();
  121. cmd.Dispose();
  122. dr.Dispose();
  123.  
  124.  
  125. stpW.Stop();
  126. timer1.Stop();
  127. }
  128.  
  129. private void timer1_Tick(object sender, EventArgs e)
  130. {
  131. lblZaman.Text = DateTime.Now.ToLongTimeString();
  132. lblBaslangic.Text = stpW.Elapsed.ToString();
  133. }
  134. }
  135. }





  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  İlişki kurulmuş bir access veritabanından c# da İsim Alıp ID Kaydetmek... werrew 0 1.460 21-11-2016, 00:29
Son Mesaj: werrew
  C sharp ile Access içindeki makroyu çalıştırma noumena 0 1.434 20-07-2016, 17:35
Son Mesaj: noumena
  Access veritabanından combobox'a verileri çekme! kubraaocal 1 2.413 15-06-2016, 12:01
Son Mesaj: onur_can
access-sql-8 c sharp miharbikesmis42 0 1.470 04-05-2015, 15:42
Son Mesaj: miharbikesmis42
  MsysObjects'in C Sharp ile okunamaması Trek6700 5 1.858 01-10-2011, 10:57
Son Mesaj: Trek6700

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi