MYI, MYD ve FRM Dosyasını Sunucuya Eklemek

MySQL sunucu kullanıyorsanız ve sunucunuz Windows’da barınıyorsa, MySQL bu verileri C:\ProgramData\MySQL\MySQL Server 5.5\data\ klasöründe saklar. Bazen burayı kullanarak yedek alabilirsiniz. Yedek aldığınız dosyalar her tablo için üç tanedir. Örneğin tablomuz “test” ise;

– test.myd
– test.myi
– test.frm

Bu dosyaları kopyalayıp yedek aldıktan sonra tekrar MySQL sunucusuna eklemek istediğinizde yapmanız gereken şey şudur. Öncelikle MySQL sunucusu çalışır durumdaysa kapatın. Bunun için MySQL Administrator adlı programı açın (Yeni adı MySQL Workbench) ve sunucuyu durdurun. Ardından yine aynı yol içerisinde hangi veritabanına kaydedecekseniz onun içine dosyayı atın. Sunucuyu tekrar çalıştırdığınızda tablonun ilgili veritabanında görüldüğünü göreceksiniz.

Herhangi bir hata ile karşılaşmamak için “REPAIR TABLE tablo” komutunu kullanabilirsiniz.

Zamanlanmış Görevler (Timer Kullanımı)

Java’da bazı işlemleri belli zaman aralıkları ile yapmamız gerekebilir. Bunun için Java’daki Timer ve TimerTask sınıflarını kullanabiliriz.

Bu kodları yazabilmek için iki Java kütüphanesine ihtiyacımız olacak. Bunları Timer kullanacağınız kod sayfanızın en başına ekliyorsunuz:

import java.util.Timer;
import java.util.TimerTask;

Sonradan sonlandırmak, tekrar başlatmak gibi işlemleri yapabilmek için genel bir değişken olarak belirleyelim. Bu kodları sınıf girişinin hemen altına ekliyoruz:

Timer myTimer = new Timer(true);
TimerTask myTask;

Burada myTimer ve myTask birer değişken. Şimdi sayacımızı çalıştıralım. Zamanlayıcı başlatmak için aşağıdaki kodu yazın:

myTask = new TimerTask(){
   public void run() {
      runOnUiThread(setTaskRunnable);
   }
};
myTimer.schedule(myTask, 0, 1000);

Burada zamanlayıcı için en önemli kod schedule(görev, geciktirme, süre aralığı) kodudur. Zaman belirtirken milisaniye cinsinden belirtirsiniz. Bu nedenle saniye olarak belirtecekseniz 1000 ile çarpıp sonucu yazın.

Örneğin her 5 saniyede bir bekleme yapmadan kodun çalıştırılması için: schedule(myTask, 0, 5000);

Önce 5 saniye bekleyip sonra her 10 saniyede bir kodun çalıştırılması için: schedule(myTask, 5000, 10000);

Yukarıda kullandığımız kodla birlikte zamanlayıcı başladı demektir. Süre aralıkları tamamladığında çalıştırılacak kodları belirlemek için;

    final Runnable setTaskRunnable = new Runnable() {
        public void run() {
           // Kodlar
        }
    };

Timer kodunun içinde belirttiğimiz setTaskRunnable bir fonksiyon adıdır. Belirtilen süre aralıklarında bu kod çalıştırılacaktır.

Zamanlayıcıyı durdurmak için .cancel() fonksiyonunu kullanabilirsiniz:

myTimer.cancel();

Hepinize iyi çalışmalar…

MySQL’de Üç Tabloyu Tek Sorguda Birleştirmek

Bazen aynı anda üç tablodaki verileri kullanmamız gerekebilir. Örneğin aşağıdaki şekilde üç tablomuz olsun:

veriler

Bu tablolardan “kullanici” kullanıcı bilgilerini saklıyor, “gruplar” ise kullanıcıların üye olabileceği grupları. “kullanici_grup” tablosu ise bu ikisi arasında bir köprü oluşturuyor. Yani hangi kullanıcının hangi grubu seçtiğini gösteriyor. Şimdi bu üç tabloyu kullanarak kullanici – grup şeklinde ekrana yazdıralım.

Kullanacağımız kod:

SELECT k.kullanici, g.grup
FROM kullanicilar k, gruplar g, kullanici_grup kg
WHERE kg.kullanici_id = k.id AND kg.grup_id = g.id; 

SELECT’ten hemen sonra almak istediğimiz verileri belirttik. FROM’dan sonra kullanacağımız tabloları belirttik. Her tablo için bir isim belirttik. Örneğin yukarıdaki işlemde tüm k’lar “kullanici” tablosunu belirtiyor. Bunu MySQL’in anlaması için şeklinde belirttik.

WHERE’den sonra iki tablo arasında köprü olan kullanici_grup tablosu ile eşleşen kullanici_id ve grup_id leri belirttik. Böylelikle MySQL sunucusu üç tablodan tek bir sorgu sonucu çıkartacaktır.

MySQL’de Kullanıcıya Yetki Vermek (Grant)

MySQL Yönetici ekranında bir kullanıcı ve bir veritabanı oluşturup bu kullanıcı için veritabanında tam yetki verelim.

Öncelikle veritabanını oluşturuyoruz:

CREATE DATABASE veritabani;

Ve bu veritabanında yetkilendireceğimiz bir kullanıcı oluşturuyoruz:

CREATE USER 'kullanici'@'localhost' IDENTIFIED BY 'sifre';

Yukarıda localhost sunucu adresidir ve kullanıcının bağlanabileceği sunucuyu belirtir. Eğer tüm sunucular için yetki verilecekse ‘kullanici’@’%’ olarak değiştirmelisiniz.

Şimdi bu kullanıcıya yarattığımız ‘veritabani’ isimli veritabanı üzerinde tam yetki verelim. Unutmayın yetki verebilmek için MySQL Yönetici şifresi ile giriş yapmış olmanız gerekiyor.

GRANT ALL ON veritabani.* TO 'kullanici'@'localhost';

Yukarıdaki kodu çalıştırdığınızda ‘veritabani’ üzerinde kullanıcı tam yetkilendirilmiş olacaktır.

Diğer tüm yetkiler ve kullanımlar için (İngilizce);
http://dev.mysql.com/doc/refman/5.1/en/grant.html

Dize Değişkenlerini Aramak

Bir verinin dizenin öğesi olup olmadığını kontrol etmek için in_array() fonksiyonunu kullanırız.

$meyveler = array('Elma','Armut','Ayva','Nar','Portakal');

if ( in_array( 'Elma', $meyveler ) )
   echo 'Aranılan meyve var!';
else
   echo 'Aranılan meyve yok!';

Yukarıdaki kodda $meyveler bir değişkendir ve bazı öğeler içerir. Elma öğesinin dizemizde olup olmadığını anlamak için in_array( ‘Elma’, $meyve ) sorgusunu yaptık. Bu fonksiyonun çıkaracağı sonuç eğer aradığımız kelime varsa TRUE (doğru), yoksa FALSE (yanlış) olacaktır. Elma olduğu için çıkan sonuç “Aranılan meyve var!” olacaktır.

Biz örnekte alfasayısal (string) bir değişken kullandık. Siz sayılarla hatta dizelerle bile arama yapabilirsiniz.