basit bir sql komut çalıştırıcı yapmak

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 12:14

basit bir sql komut çalıştırıcı yapmak

Mesaj gönderen mucar » 22 Oca 2007 06:04

Oracle 10g Express Edition'da birden fazla sql cümlesini aynı anda çalıştıramadığım için geçici olarak basit bir sql komut çalıştırıcı yaptım. Belki aynı yerde takılanlara yardımcı olur;

Malzemeler
--------------
1 tane textbox
1 tane button

Ör:
Textbox1'in Rows özelliğini 100 yap
Textbox1'in TextMode özelliğini MultiLine yap
Textboxx1'in Wrap özelliğini true yap
Textbox1'in Text'ine;

Kod: Tümünü seç

INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (1, 1, 'Merkez')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (2, 1, 'Aladag')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (3, 1, 'Ceyhan')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (4, 1, 'Feke')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (5, 1, 'Imamoglu')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (6, 1, 'Karaisali')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (7, 1, 'Karatas')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (8, 1, 'Kozan')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (9, 1, 'Pozanti')
INSERT INTO ILCE (ILCE_ID, IL_ID, ILCE_ADI) VALUES (10, 1, 'Saimbeyli')
sql komutlarını yapıştır.

ve kodlarımız;

Kod: Tümünü seç

public static OleDbConnection getConnection() 
		{
			OleDbConnection conn=null;
			try 
			{
				// web.config dosyasında tanımlı olan bağlantı stringini alır.
				conn= new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("Enerji"));					
				conn.Open();
			} 
			catch (Exception e) 
			{
				throw e;
			}
			return conn;
		}

		public static OleDbCommand getCommand(String SQL) 
		{			
			OleDbConnection conn = getConnection();
			return new OleDbCommand(SQL,conn);            
		}

		public static OleDbCommand getCommand(OleDbConnection conn, String SQL) 
		{									
			return new OleDbCommand(SQL,conn);            
		}
public static bool SQLCalistir(String SQL) 
		{			
			bool r;
			OleDbConnection conn=getConnection();
			OleDbCommand cmd = getCommand(conn, SQL);
			r=SQLCalistir(conn,cmd,SQL);
			cmd.Dispose();
			conn.Close();
			return r;
		}

		public static bool SQLCalistir(OleDbConnection conn,String SQL) 
		{			
			bool r;
			OleDbCommand cmd = new OleDbCommand();
			r = SQLCalistir(conn,cmd,SQL);				 
			cmd.Dispose();
			return r;
		}

		public static bool SQLCalistir(OleDbConnection conn,OleDbCommand cmd,String SQL) 
		{
			bool r=true;							
			//OleDbTransaction trans=null;						
			// Transaction işlemi .
			try 
			{
				cmd.Connection  = conn;
				cmd.CommandType = CommandType.Text;
				cmd.CommandText = SQL;
				cmd.ExecuteNonQuery();				
				
			}
			catch (Exception e) 
			{
				r=false;

				//throw e;
			} 
			finally 
			{
			}
			return r;
		}

        protected void button1_Click(object sender, EventArgs e)
        {

            string[] dizi = TextBox1.Text.Split("\n".ToCharArray());
            int satirsayisi = dizi.Length;
            for (int i = 0; i <= satirsayisi - 1; i++)
            SQLCalistir(dizi[i].ToString());
        }

En son mucar tarafından 24 Oca 2007 10:04 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"

t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex » 22 Oca 2007 11:00

Kodda bir şey dikkatimi çekti.

Her SQL cümleciği için veritabanı bağlantısı açılıyor, SQL çalıştırılıyor ve bağlantı kapatılıyor. Bu performansı olumsuz etkilemiyor mu?

Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 12:14

Mesaj gönderen mucar » 23 Oca 2007 08:46

şöyle söyleyim, viewtopic.php?t=18540'da arkadaşların bağlantı ve veritabanı işlemleri ile ilgili hazır fonksiyonlar ve araçlar kullanma ile ilgili fikirleri benim de kafama yattı. Buradaki fonksiyonlar da aslında hazır veritabanı fonksiyonlarını içeren bir sayfadan alınan fonksiyonlar, bu konuda emin olmadığım için bir şey söyleyemeyeceğim, fakat ben de yapsam bağlantıyı bir kez açar formdan çıkarken veya uygun bir yerde kapatırdım ama belki de işin doğrusu budur. Bir de şöyle bir ayrıntıyı belirteyim, bu şekilde Oracle Express veritabanına 1000 kadar kaydı 1 dakikadan az sürede girebiliyor.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"

t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex » 23 Oca 2007 06:41

Oracle Express veritabanına 1000 kadar kaydı 1 dakikadan az sürede girebiliyor.
Demekki hızı olumsuz etkiliyormuş. Normalde hızın saniyede 400 kayıt civarlarında olması lazım.

Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 12:14

Mesaj gönderen mucar » 24 Oca 2007 03:50

t-hex yazdı:Demekki hızı olumsuz etkiliyormuş. Normalde hızın saniyede 400 kayıt civarlarında olması lazım.
doğrudur hocam. teşekkür ederim tavsiyeniz için. göz önünde bulunduracağım.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"

Cevapla