Trina -  09-08-2009 15:04
Öncelikle bu kodları kullanmak için sphere.ini de bazı ayarlar yapmanız gerekmekte. Sphere.ini yi açınca aşağıdaki yeri kolaylıkla görebilirsiniz.

Kod:
// MySql configuration.
MYSQL=1 // sphere'in mysql kullanımını aktif etmek için bu 1 olacak
MySqlHost=buraya mysqlin bulunduğu makinenin adresi
MySqlUser=kullanıcı adı
MySqlPassword=şifresi
MySqlDatabase=ve mysql de sphere için kullanacağınız database adı.Bu genelde size mysql'i sağlayan şirket tarafından verilir, yani bir uo serverı için aldığınız makinada mysql varsa hostu aldığınız şirket size veritabanı adınızı verir.


Bu ayarları yaptıktan sonra sphere'i açtıktan sonra konsolda db.connect yazmanız gerekecek. Bunu yazarak sphere'in mysql veritabanına bağlanmasını sağlıyoruz. 'db.connect' komutunu 56b'nin standart script paketinde bulunan sphere_serv_triggers.scp içindeki f_onserver_start fonksiyonu altına koyarsanız server açıldığında sphere otomatik olarak db ye bağlanacaktır.

Diğer dökümanlarda hep kolay demişimdir. Ancak bu döküman için benim düşüncem MySQL pc hakkında bilgisi olmayan kişiler için zor. Şimdi burada size gerekecek bi kaç komut yazacağım.

MySQL
MySQL de tabloları gerçekten de gözle görülür bir tablo gibi düşünürseniz daha kolay anlayabilirsiniz. Veri okuma kısmı diğer kısımlara göre biraz daha karışık olduğu için onu en son anlatacağım.

MySQL'de yapılacak işlemler db.execute ile başlar, " ve " işaretleri arasında bulunan ise yapılacak işlemin belirlendiği yerdir.

Create Table
Bu komut, adından da anlaşılacağı gibi bir veri tabanında tablo oluşturmaya yarar.

Kod:
db.execute "create table test(isim text, killsayisi int, uid text)"


Burada,

Kod:
"db.execute", mysql'de işlem yapacağımız belirtiyoruz,


Kod:
"create table test", test adında bir tablo oluştur,


Kod:
"(isim text,", bu tabloda isim adında bir bölüm (kolon) oluştur ve bu kolona girilecek değerler text, yani string, diğer bi deyişle "a,b,c,d,.." gibi harf değerleri olsun.


Kod:
", killsayisi int", killsayisi adında bir kolon oluştur ve bu kolona girilecek değerler int (integer), yani "1,2,3,4,.." gibi tamsayılar olsun.


Kod:
", uid text)", uid adında bir kolon oluştur ve bu kolona girilecek değerler text olsun.


Bu kodu kullandığınızda veritabanı içerisinde, şekli aşağıdakine benzeyen test atında bir tablo oluşturulur.

Create Table altında kullanılacak çeşitli şeyler var. Mesela (isim text, killsayisi int) kısmının başına (numara int not null auto_increment ekleyebilirsiniz. Burada not null eklenecek numara adlı kolonun boş olamayacağını, auto_incerement ise, bu tabloya "insert" komutu ile yeni bir veri eklendiğinde burda bulunan sayının otomatik olarak bir artacağını belirtir. Bu ve benzeri kodlar için ayrıntılı bilgiyi araştırarak bulabilirsiniz.

Create Table komutunu genel olarak scriptlerde aktif olarak kullanmayacaksınız.

Insert
Bu komutla oluşturduğunuz tablolara veri yerleştirebilirsiniz. Aşağıda bu komutun kullanımına bir örnek var.

Kod:
[function asdas]
db.execute "insert into test values ('Trina',55,'04ff')"


Burada,

Kod:
"insert into", yazarak bir tabloya veri girişi yapacağımızı belirtiyoruz,


Kod:
"test", yazarak bilgileri yerleştireceğimiz tablo adını belirtiyoruz, burda bir önceki komutla yarattığımız test tablosunu kullandım.


Kod:
"values ('Trina',55,'04ff')", burada da yarattığımız tablodaki kolonlara sırasıyla bilgileri giriyoruz.


Not:
Burada values den sonra gelen bilgilerin çift tırnak (" değil de tek tırnak (' içinde olduğuna dikkat edin. Çift tırnak koyarsanız hata alırsınız.

Not 2:
Dikkatinizi çektiyse <name> ve <uid> girişlerine tek tırnak (' kullanırken, <kills> kısmında tek tırnak kullanmadık çünkü tamsayı girerken tek tırnak kullanmıyoruz.(tabloyu oluştururken "killsayisi int" yazarak killsayisi kolonuna girilecek değerlerin tamsayı olacağını belirtmiştik)

Not 3:
Bu örnekte '"insert into test" yaztıktan sonra direk 'values ..."' diye devam ettik. Bunu yapmamızın nedeni tablodaki kolonların hepsine bilgileri yerleştirmiş olmamız. Eğer isim kolonuna bir değer girmeseydik, sadece killsayisi ve uid kolonlarına değer girseydik komut şu şekilde olacaktı,


Kod:
db.execute "insert into test (killsayisi, uid) values (<kills>, '<uid>')"


Fark gayet açık, tablo adını yazdıktan sonra hangi kolonlara giriş yapacağımızı parantezler içinde belirttik, bütün değişiklik bu kadar.

Oyunda .asdas yazdığımızda test adlı tablonun görünümü aşağıdaki gibi değişecektir.

Update
Bu komut tabloya girilmiş bir veriyi değiştirmeye yarar. Kullanımı çok kolaydır aşağıdaki örnekle hemen anlayacaksınız.

Diyelim Trina dan sonra aşağıdaki kodu kullanarak test tablosuna yeni bir veri daha yerleştirdik,

Bu kodu kullandıktan sonra tablonun görünümü aşağıdaki gibi olacaktır.

Bu, test adlı tabloda killsayisi kolonunda bulunan bütün değerleri 25 yapar. Ama siz sadece isim kolonunda Trina yazan kısmı değiştirmek istiyorsanız komuta aşağıdaki gibi bir ekleme yapmanız gerekir.

Kod:
db.execute "update test set killsayisi=55 where isim='Trina'"


Bu komut sadece isim kolonunda Trina yazan satırdaki killsayisi kolonunun değerini 25 yapar. Yani bir önceki verdiğim kod yerine bu kodu kullanırsak tablonun şekli bi önceki verdiğim resimdeki gibi değil, aşağıdaki gibi olur.

Delete
Bu kısımda veritabanından bilgi silmeyi yazıyorum. Aşağıda örnek bir kod var.

db.execute "delete from test"

Bu kod, yarattığımız test adlı tablodan bütün satırları siler. Biz iki satır yerleştirdiğimize göre, tablodan iki satır da silinir ve tablo boş kalır.

Belirli bir koşula göre silme yapacaksak, mantık <b>update</b>'te kullandığımız mantıkla aynıdır. Aşağıda gene örnek bir kod var.

Kod:
db.execute "delete from test where isim='Tolga'"


Bu kod ile isim kolonunda Tolga yazan satır silinecek, diğer satırlar kalacaktır. Yani eğer bu kodu kullanırsak görünüm aşağıdaki gibi olur.

SelectŞimdi sıra geldi veri girdiğimiz tablolardan veri okumaya. Bu biraz karışık ama dikkatli incelenirse kolayca anlaşılabilir.

Kod:
db.execute "select * from test"


Bu kodu kullandığınızda, mysql tablodaki bütün verileri size sunacaktır. Sunulan bilgilere ulaşma şeklini aşağıda vereceğim. Mesela ulaşılan bilgiyi sysmessage yazdırmak istiyorsanuz. Üstteki koddan sonra aşağıdaki kodu kullanabilirsiniz.

Kod:
[function test]
db.execute "select * from test"
for x 0 88
if !(<db.row.<dlocal.x>.isim>)
return 1
endif
sysmessage <db.row.<dlocal.x>.isim>
endfor


Burda;

Kod:
db.execute "select * from test", ile test tablosundan veri alacağımızı belirtiyoruz,


Kod:
for x 0 88, yazarak 0 ve 88 arası satır uzunlukta sonuç çıkabileceğini belirtiyoruz, sonuçta oluşabilecek satır sayısı ne kadar fazlaysa 2. sayıyı (88) o kadar çok tutmanızda yarar var, çok olmasının bi zararı yok zaten eğer satırda birşey yoksa bir sonraki if döngüyü otomatik durduruyor.


Kod:
if !(<db.row.<dlocal.x>.isim>), eğer <dlocal.x>. satırdaki isim kolonu boşsa.


Kod:
return 1, döngüyü durdur.


Kod:
endif, if i kapat


Kod:
sysmessage <db.row.<dlocal.x>.isim>, gelen sonuçlardan <dlocal.x>. satırdaki isim kolonundaki bilgiyi sysmessage olarak yaz.


Kod:
endfor, for'u kapat.


Aynı 'where x=y' kısmı burda da geçerli. Yani sadece belirli koşulda sonuç çekmek istiyosanız,

Kod:
db.execute "select * from test" where killsayisi=25"


kullanarak sadece killsayisi kolonu 25 olan satırı çekebilirsiniz.

MySQL'de daha bir sürü komut var ancak sphere için size lazım olanları bu kadar, ondan diğer komutlara değinmeyeceğim.</b>

Copyright © Trina

YORUMLAR (3)

RasmuS 03-03-2010 15:48    
Geç olsada gördüm gerçekten çok güzel anlatılmış bir döküman ellerine sağlık
Trina- 04-05-2011 00:58    
"select " ile başlayan komutlarda .execute kullanmayınız .query kullanınız yoksa hata alırsınız.

Yanlış yazmışım oraya.
Leppasol 07-04-2017 03:08    
Güncellermiyiz

BENZER SAYFALAR