Jump to content

Mysl Transaction Kullanımı


korasoglu
 Share

Recommended Posts

Arkadaşlar sqlite transaction kullandığım zaman ardarda sorgularda herhangi bir hata yok ise kayıt  yapıyor var isede tüm işlemleri iptal ediyor ve çok hızlıda yazıyor aynısı mysql ile denedim olmadı yapamadım sizden ricam transaction kullanmı mysql de nasıl olmalı yani hata varsa tüm işlemler iptal edilmeli

 SQL Baglan = new SQL();
            var stopwatch = new Stopwatch();
            stopwatch.Start();
            Baglan.Baglanti.Open();
            using (Baglan.Komut = new SQLiteCommand(Baglan.Baglanti))
            {
                using (var transaction = Baglan.Baglanti.BeginTransaction())
                {
                        Baglan.Komut.CommandText = Cumle; Baglan.Komut.ExecuteNonQuery();
                        transaction.Commit();
                }
            }
            Baglan.Baglanti.Close();

Edited by korasoglu
Link to comment
Share on other sites

Sevgili pairs bu benzeri örnekleri inceleyerek denemiştim sorun şu

 try
            {
                for (int i = 0; i < 10; i++)
                {
                    myCommand.CommandText = "insert into deneme (ad, soyad) VALUES (100, 'Description')";
                    myCommand.ExecuteNonQuery();
                    
                   
                }
                for (int i = 0; i < 10; i++)
                {
                  
                    myCommand.CommandText = "insert into deneme2 (ad3, soyad) VALUES (100, 'Description')";
                    myCommand.ExecuteNonQuery();
                   
                }
                myTrans.Commit(); myConnection.Close();
                
            }

iki tablo yapısıda aynı sadece isimleri farklı yukarıdaki örnekte ikinci forda sütün adını ad yerine ad3 yazdım birinci for çalışyor ve yazıyor ikincisi hatalı ve try olduğu için hata vermiyor  yazmıyorda ama sonuçta hatalı bir işlem olması rağmen veri tabanına veri yazıldı ben hata varsa yazılmasını istemiyorum.

Normal düz mantık myTrans.Commit(); bunu görmeden yazma işlemi yapmaması lazım, zaten görmüyorda ama üstteki işlemde hata olmadığı için yazma işlemi yapıldı bu sorunu nasıl çözebilirim.

Link to comment
Share on other sites

  • 2 hafta sonra ...

Arakadaşlar MYISAMda  MySqlTransaction kullanımı yok galiba denemedik örnek koymadım  myTrans.Commit(); görsün görmesin yazma işlemi gerçekleşiyor. araştırmalarımda myisamın foreign keys desteği yokmuş acaba MySqlTransaction desteğidemi yok andanmı bu hatayı alıyorum anlamadım yardımcı olursanız çok sevinirim.

Aşağıdaki örnekte bir hata var buna karşılık try catch yapısı var Rollback(); var ama yinede yazma işlemi gerçekleşiyor.

 

public void RunMySqlTransaction(connectionString)
        {
            MySqlConnection myConnection = new MySqlConnection(connectionString);
            myConnection.Open();

            MySqlCommand myCommand = new MySqlCommand();
            myCommand.Connection = myConnection;
            MySqlTransaction myTrans;

            // Start a local transaction
            myTrans = myConnection.BeginTransaction();
            // Assign transaction object for a pending local transaction
            myCommand.Transaction = myTrans;

            try
            {
                myCommand.CommandText = String.Format("INSERT INTO deneme (ad) VALUES ('{0}')", "ahmet");
                myCommand.ExecuteNonQuery();
                myCommand.CommandText = String.Format("INSERT INTO deneme (ad21) VALUES ('{0}')", "ahmet");
                myCommand.ExecuteNonQuery();
                myTrans.Commit();
                
            }
            catch (Exception e)
            {
                myTrans.Rollback();
               
            }
            finally
            {
                myConnection.Close();
            }
        }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...