UO-Dev Arama


Mysql'den yararlanmak için bilgiler

Yazar: Trina
Tarih: 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.

https://img232.imageshack.us/img232/3482/botablowi6.jpg


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.

http://img519.imageshack.us/img519/1290/dolutablovk7.jpg


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,

[img]db.execute "insert into test values ('Tolga',67,'05ad8'"[/img]

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

http://img59.imageshack.us/img59/8963/dolutablo2lx8.jpg


http://img59.imageshack.us/img59/8963/dolutablo2lx8.jpg


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.

http://img59.imageshack.us/img59/8963/dolutablo2lx8.jpg


http://img65.imageshack.us/img65/3986/dolutablo4od5.jpg


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.

http://img59.imageshack.us/img59/8963/dolutablo2lx8.jpg


http://img519.imageshack.us/img519/1290/dolutablovk7.jpg


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

1.   Gönderen RasmuS   03-03-2010 16:48    

Geç olsada gördüm gerçekten çok güzel anlatılmış bir döküman ellerine sağlık

2.   Gönderen 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.

3.   Gönderen Leppasol   07-04-2017 03:08    

Güncellermiyiz

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : 8.75   
Oylar: 4 den itibaren 24-07-2010 07:14

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Açık arttırma v1 (MySql)0aldarson17-07-2010
Duyuru sistemi (MYSQL]0Culum07-06-2010
MySQL Komutları0TheRaskol06-09-2009
MySQL Kurulumu0TheRaskol06-09-2009
MySQL İpuçları Detaylı Anlatım 10TheRaskol06-09-2009


Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,