Çoğu faturaların, çeklerin, senetlerin vb tutarlarının yanında yazı ile yaılmaları gerekmektedir. Son günlerde duyduğum bir ihtiyaçtan dolayı bu çeviri işlemini MySQL veritabanı üzerinde sorgu esnasında yapmak durumunda kaldım. Şimdi bu kodu sizlerle paylaşıyorum: MYSQL CREATE DEFINER = 'adminuser'@'%' FUNCTION `number_to_string`( n DOUBLE(15,2) ) RETURNS varchar(100) CHARSET latin5 NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE ans varchar(2000); DECLARE dig1, dig2, dig3 VARCHAR(20); DECLARE uclukler, ucluklerTers int; DECLARE tam, ondalik CHAR(30); DECLARE strNum CHAR(3); DECLARE strNumKalan CHAR(30); DECLARE ind int; SET uclukler = 0; SET ucluklerTers = 0; SET ans = ''; SET strNumKalan = ''; -- Tam Ondalık kısmı alır SET strNumKalan = CAST(n AS CHAR(30)); SET strNumKalan = REPLACE(strNumKalan, ',', '.'); SET ondalik = SUBSTRING_INDEX(strNumKalan,'.',-1); SET tam = SUBSTRING_INDEX(strNumKalan,'.',1); -- Tam kısımda kaçtane 3 lü parça var WHILE FLOOR(tam/ POW(1000, uclukler)) > 0 DO SET uclukler = uclukler +1; END WHILE; SET strNumKalan = tam; -- Tam kısım parçalanması WHILE (uclukler > 0) DO -- Kelimelere dokulcek kısmı ayır IF(ucluklerTers = 0) THEN Set ind = LENGTH(strNumKalan)%3; IF(ind = 0) THEN SET ind = 3; END IF; SET strNum = SUBSTRING(strNumKalan, 1, ind); SET strNumKalan = CONCAT('', SUBSTRING(strNumKalan, LENGTH(strNum)%3 +1)); ELSE SET strNum = SUBSTRING(strNumKalan, 1, 3); SET strNumKalan = CONCAT('', SUBSTRING(strNumKalan, 4)); END IF; SET uclukler = uclukler -1; SET ucluklerTers = ucluklerTers +1; -- 100luk 10luk 1lik kısımları al IF (LENGTH(strNum) = 3) THEN SET dig3 = SUBSTRING(strNum, 1, 1); SET dig2 = SUBSTRING(strNum, 2, 1); SET dig1 = SUBSTRING(strNum, 3, 1); ELSEIF(LENGTH(strNum) = 2) then SET dig3 = '0'; SET dig2 = SUBSTRING(strNum, 1, 1); SET dig1 = SUBSTRING(strNum, 2, 1); ELSE SET dig3 = '0'; SET dig2 = '0'; SET dig1 = SUBSTRING(strNum, 1, 1); END IF; -- Cümleye dök IF NOT(dig3 = '0' AND dig2 = '0' AND dig1 = '1' AND uclukler = 1) THEN IF dig3 <> '0' THEN CASE WHEN dig3='1' THEN SET ans=CONCAT(ans, 'Yüz'); WHEN dig3='2' THEN SET ans=CONCAT(ans, 'İkiyüz'); WHEN dig3='3' THEN SET ans=CONCAT(ans, 'Üçyüz'); WHEN dig3='4' THEN SET ans=CONCAT(ans, 'Dörtyüz'); WHEN dig3='5' THEN SET ans=CONCAT(ans, 'Beşyüz'); WHEN dig3='6' THEN SET ans=CONCAT(ans, 'Altıyüz'); WHEN dig3='7' THEN SET ans=CONCAT(ans, 'Yediyüz'); WHEN dig3='8' THEN SET ans=CONCAT(ans, 'Sekizyüz'); WHEN dig3='9' THEN SET ans=CONCAT(ans, 'Dokuzyüz'); ELSE SET ans = ans; END CASE; END IF; IF dig2 <> '0' THEN CASE WHEN dig2='1' THEN SET ans=CONCAT(ans, 'On'); WHEN dig2='2' THEN SET ans=CONCAT(ans, 'Yirmi'); WHEN dig2='3' THEN SET ans=CONCAT(ans, 'Otuz'); WHEN dig2='4' THEN SET ans=CONCAT(ans, 'Kırk'); WHEN dig2='5' THEN SET ans=CONCAT(ans, 'Elli'); WHEN dig2='6' THEN SET ans=CONCAT(ans, 'Altmış'); WHEN dig2='7' THEN SET ans=CONCAT(ans, 'Yetmiş'); WHEN dig2='8' THEN SET ans=CONCAT(ans, 'seksen'); WHEN dig2='9' THEN SET ans=CONCAT(ans, 'Doksan'); ELSE SET ans=ans; END CASE; END IF; IF dig1 <> '0' THEN CASE WHEN dig1='1' THEN SET ans=CONCAT(ans, 'Bir'); WHEN dig1='2' THEN SET ans=CONCAT(ans, 'İki'); WHEN dig1='3' THEN SET ans=CONCAT(ans, 'Üç'); WHEN dig1='4' THEN SET ans=CONCAT(ans, 'Dört'); WHEN dig1='5' THEN SET ans=CONCAT(ans, 'Beş'); WHEN dig1='6' THEN SET ans=CONCAT(ans, 'Altı'); WHEN dig1='7' THEN SET ans=CONCAT(ans, 'Yedi'); WHEN dig1='8' THEN SET ans=CONCAT(ans, 'Sekiz'); WHEN dig1='9' THEN SET ans=CONCAT(ans, 'Dokuz'); ELSE SET ans=ans; END CASE; END IF; END IF; IF(dig3 <> '0' OR dig2 <> '0' OR dig1 <> '0' ) THEN CASE WHEN uclukler = 2 THEN SET ans=CONCAT(ans, 'Milyon'); WHEN uclukler = 1 THEN SET ans=CONCAT(ans, 'Bin'); ELSE SET ans=ans; END CASE; END IF; END WHILE; IF(ans<>'') THEN SET ans=CONCAT(ans, 'Lira'); END IF; -- Kurus kısmı IF(LENGTH(ondalik) = 1) THEN SET dig2 = '0'; SET dig1 = SUBSTRING(ondalik, 1, 1); ELSE SET dig2 = SUBSTRING(ondalik, 1, 1); SET dig1 = SUBSTRING(ondalik, 2, 1); END IF; IF dig2 <> '0' THEN CASE WHEN dig2='1' THEN SET ans=CONCAT(ans, 'On'); WHEN dig2='2' THEN SET ans=CONCAT(ans, 'Yirmi'); WHEN dig2='3' THEN SET ans=CONCAT(ans, 'Otuz'); WHEN dig2='4' THEN SET ans=CONCAT(ans, 'Kırk'); WHEN dig2='5' THEN SET ans=CONCAT(ans, 'Elli'); WHEN dig2='6' THEN SET ans=CONCAT(ans, 'Altmış'); WHEN dig2='7' THEN SET ans=CONCAT(ans, 'Yetmiş'); WHEN dig2='8' THEN SET ans=CONCAT(ans, 'Seksen'); WHEN dig2='9' THEN SET ans=CONCAT(ans, 'Doksan'); ELSE SET ans=ans; END CASE; END IF; IF dig1 <> '0' THENn CASE WHEN dig1='1' THEN SET ans=CONCAT(ans, 'Bir'); WHEN dig1='2' THEN SET ans=CONCAT(ans, 'İki'); WHEN dig1='3' THEN SET ans=CONCAT(ans, 'Üç'); WHEN dig1='4' THEN SET ans=CONCAT(ans, 'Dört'); WHEN dig1='5' THEN SET ans=CONCAT(ans, 'Beş'); WHEN dig1='6' THEN SET ans=CONCAT(ans, 'Altı'); WHEN dig1='7' THEN SET ans=CONCAT(ans, 'Yedi'); WHEN dig1='8' THEN SET ans=CONCAT(ans, 'Sekiz'); WHEN dig1='9' THEN SET ans=CONCAT(ans, 'Dokuz'); ELSE SET ans=ans; END CASE; END IF; IF(dig2 <> '0' OR dig1 <> '0' ) THEN SET ans=CONCAT(ans, 'Kurus'); END IF; RETURN TRIM(ans); END; HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title></title> <script type="text/javascript"> function cevir(){ var el=document.getElementById('inp1'); var el2=document.getElementById('inp2'); if(el.value.length==1 && el.value==0) return el2.value="sıfır"; var basamak=[ [0,"","","","bin",""], [1,"bir","on","yüz","bin","on"], [2,"iki","yirmi","iki yüz","iki bin","yirmi"], [3,"üç","otuz","üç yüz","üç bin","otuz"], [4,"dört","kırk","dört yüz","dört bin","kırk"], [5,"beş","elli","beş yüz","beş bin","elli"], [6,"altı","altmış","altı yüz","altı bin","altmış"], [7,"yedi","yetmiş","yedi yüz","yedi bin","yetmiş"], [8,"sekiz","seksen","sekiz yüz","sekiz bin","seksen"], [9,"dokuz","doksan","dokuz yüz","dokuz bin","doksan"] ]; var arr=[]; for(var n=0, b=el.value.length; n<el.value.length; n++,b--) { for(var i=0; i<10; i++) { if(el.value.charAt(n)==basamak[i][0]) arr[arr.length]=basamak[i][b]; } } el2.value=arr.join(" "); } </script> </head> <body> <input type="text" id="inp1" value=""> <input type="button" value="yazıya çevir" onclick="cevir()" > <input type="text" id="inp2" > </body> </html> (Kaynak: http://forum.ceviz.net/javascript-dhtml-ajax/57534-sayiyi-yaziya-cevirme.html) ORACLE CREATE OR REPLACE FUNCTION spell_number (p_number IN NUMBER) RETURN VARCHAR2 AS TYPE myArray IS TABLE OF VARCHAR2 (255); l_str myArray := myArray ('', ' thousand ', ' million ', ' billion ', ' trillion ', ' quadrillion ', ' quintillion ', ' sextillion ', ' septillion ', ' octillion ', ' nonillion ', ' decillion ', ' undecillion ', ' duodecillion '); l_num VARCHAR2 (50) DEFAULT TRUNC (p_number); l_return VARCHAR2 (4000); BEGIN FOR i IN 1 .. l_str.COUNT LOOP EXIT WHEN l_num IS NULL; IF (SUBSTR (l_num, LENGTH (l_num) - 2, 3) <> 0) THEN l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 2, 3), 'J'), 'Jsp') || l_str (i) || l_return; END IF; l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 3); END LOOP; RETURN l_return; END; / SELECT spell_number (53734555555585) FROM DUAL; (Kaynak: http://viralpatel.net/blogs/convert-number-into-words-oracle-sql-query/) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tags: , | Categories: SQL | HTML | Javascript | Oracle
.NET Framework 3.5 ile LINQ teknolojisi ve sonrasında Entity Framework gelmiş ve bunun üzerinden uzun süre geçmiş olsa da, günümüz şirketlerinin çoğu IT konularında ADO.NET teknolojisini kullanmaya devam emekteler. Çünkü, IT konusunda uzun süre kullanılan ve kararlılığı test edilmiş teknolojileri kullanmak, devamlılık ve performans konusunda en iyi çözümdür. Bunun üstünde sunucuların özelliklerine bağlı olarak maliyetleri de gelince ADO.NET en ekonomik çözüm olarak gözükmektedir. Sözü daha fazla uzatmadan kod kısmına geçmek istiyorum: SqlConnection conn = new SqlConnection("Data Source=(local); Initial Catalog=Northwind;Integrated Security=SSPI"); SqlDataReader rdr = null; try { SqlCommand cmd = new SqlCommand("select * from Customers", conn); conn.Open(); rdr = cmd.ExecuteReader(); while (rdr.Read()) Console.WriteLine(rdr[0]); } finally { if (rdr != null) rdr.Close(); if (conn != null) conn.Close(); }   Ancak verinin tek yerde olması, güveli olması vb durumlardan ötürü Connection string web.config dosyası içinde de saklanabilir. <connectionStrings> <add name=”connString” connectionString=”Data Source=(local); Initial Catalog=Northwind; Integrated Security=SSPI” providerName=”System.Data.SqlClient” /> </connectionStrings> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Bu durumda connection string verisini şu şekilde çekebiliriz: ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[“connString”]; SqlConnection conn = new SqlConnection(cs.ConnectionString); //............................................ .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } İlla sorgu kod tarafından gönderilme zorunluluğu yoktur. Store Prosedure ler ile de işlemler yapılabilir. O nu da şu şekilde ayarlıyoruz: SqlCommand cmd = new SqlCommand("dbo.sp_deneme", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Id", Id)); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }     Yukarıdaki işlemileri tamamladıktan sonra gelen veriyi GridView, DropDownList gibi componentlere yükleyerekamacımıza ulaşmış oluruz. .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } tweetmeme_source = 'makcura'; tweetmeme_service = 'bit.ly'; Tags: , , , , | Categories: SQL | .NET

Ekim 1021

mysqldump

Mysql veritabanındaki verilerinizi herhangi bir görsel arayüz kullanmadan, sadece komut satırını kullanarak yapmak istiyorsanız imdadımıza mysqldump komutu yetişmektedir. Mysqldump, herhangi bir mysql sürümü ile bilgisayarına kopyalanmaktadır. Windows işletim sistemlerinde otomatik olara aşağıdaki dizine kurulmaktadır. C:\Program Files\MySQL\MySQL Server 5.1\bin   Biraz olsa da komutun aldığı parametreler ile kullanış şekillerini size tanıtmak istiyorum: mysqldump -u [user] -p [db_name] > backup.sql —> “user” kullnıcı ismini kullanara db_name isimli veri tabanını backup.sql isimli dosyanın içine al. Bu işlemi yaparken şifre sorar. Temel kullanım yukarıdaki gibidir. Fakat farklı parametreler de gelebilir: --pass=[password] --host=[host_name]  veya  -h [host_name] --add-drop-table --add-drop-database --add-locks --dump-date --lock-all-tables  veya  -x --port=[port_num] --skip-comments --tables   Yukarıda yazdıklarım genelde benüm kullandıklarım. Bunlar gibi daha onlarcası bulumakta. Devamı için mysql development sayfalarını kontrol edebilirisiniz. Mysqldump fonksiyonun tersi mysqldir. mysql db_name < backup-file.sql .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tags: , | Categories: SQL
Yazılımlar sayesinde bilgisayarlar üzrindeki çoğu işimizi arayüzler sayesinde hallediyoruz. Aslında bizim arayüzlerden hallettiğimiz şeyler yalnızca sistem komutlarını tetikleyecek çağrılar. İşin esas mutfağında (Windows/Linux işletim sistemleri) komut yazmak için ekranlar açılarak gerekli komutların çağrılması sağlanır. Örn: IDE aracılığı ile bir C programı derlerken, IDE derleme komutlarını (gcc, g++ gibi) komutları kendisi çağırır. Java veya Microsoft temel kütüphaneleri bu fonksiyonları biliyorsa hiç sıkıntı yok. Kendi içlerinde bunlar için hazır fonksiyonlar vardır. Java için inceleme şansı bulamadım. Ancak C# dilinde şöyle bir sorunla karşılaştım: mysql veri tabanı yedeklemek için “mysqldump” adında bir komutu çalıştırmam gerekiyordu. Yani microsost hazır komutlarından değil, mysql kurulumu ile birlikte gelen komutlardan. Ve bu işlemi komut satırını açtırtarak yapmam gerekiyordu. Uzun araştırmakarım sonucunda şu şekilde bir kod parçacağı yazdım: string veriAlma = "mysqldump -u root --password=pass dbname table > c:/t.sql"; Process Process = new Process(); ProcessStartInfo ProcessInfo; ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + veriAlma); ProcessInfo.CreateNoWindow = true; ProcessInfo.UseShellExecute = false; Process = Process.Start(ProcessInfo); Process.WaitForExit(); Process.Close(); İşlem başarıyla gerçekleşiyor. Bu işlemde cmd.exe ile açılacak olan komut satırını kullanacağımız için cmd.exe kullanıldı. Onun yerine farklı uygulamalar açılmak istenirse farklı komutlar kullanılabilir. Örn: msconfig.exe   Önemli bir not: mysqldump komutu bu şekilde çalıştırmak için mysqldump.exe dosyası System32 altına taşınmıştır. .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tags: , , | Categories: C# | SQL
Microsoft teknolojilerini benimsemiş ve bunları kullanarak projeler geliştiren biri olarak, yazdığım programın kod kısmında veri tabanı bağlantıları ile uğraşmam. Ancak bu yazımda, daha önceki yazılarımda da bahsettiğim dönem projemde karşılaştığım ve internette aramak zorunda kaldığım durum: Java içinde MySQL veri tabanı bağlantılası yapma konusunu. Aslında çok kolay. Yine de sizle paylaşmak istedim. Connection dbConn = null; String dbUserName = new String("root"); //Veri tabanı kullanıcı adı String dbPassword = new String("root"); //Veri tabanı şifresi String dbURL = new String("jdbc:mysql://127.0.0.1/blg361g02"); //Veritabanı yeritry { Class.forName("com.mysql.jdbc.Driver").newInstance(); dbConn = DriverManager.getConnection(this.dbURL, this.dbUserName, this.dbPassword); //Bağlantının sağlandığı satır System.out.println("Database connection established"); } catch (Exception e) { System.err.println("Cannot connect to database server"); } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tags: | Categories: JAVA | SQL