MySql database local bağlantısı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
MySql database local bağlantısı
Selam,
xe5 ile MySql local database bağlantısı için hangi componentleri kullana bilirim...
xe5 ile MySql local database bağlantısı için hangi componentleri kullana bilirim...
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: MySql database local bağlantısı
MyDAC veya AnyDAC en iyileri bunlar bildiğim kadarı ile ücresitsiz bileşenlerde mevcut yanlış hatırlamıyorsam
Re: MySql database local bağlantısı
Net ortamında bulunan mysql databaselere delphi xe5 de bulunan FDConnection ve FDQuery bağlanıyorum fakat local hiç yapmadım local de FDConnection ve FDQuery bağlantıyı çözemedim
Re: MySql database local bağlantısı
SQLConnection1 ile hem local hem terminal bağlantı kurabilirsin
baglantı kuracağın mysql bilgilerini kayıt defterinden okuyarak
program üzerinden bağlanacağın mysql bilgileri değiştirebilirsin
işte en basit yolu
baglantı kuracağın mysql bilgilerini kayıt defterinden okuyarak
program üzerinden bağlanacağın mysql bilgileri değiştirebilirsin
işte en basit yolu
Kod: Tümünü seç
String GenelKayitDefterinden_Oku(String sDizin, String sAnahtar )
{
TRegistry *Kayit = new TRegistry(KEY_READ);
Kayit->RootKey = HKEY_LOCAL_MACHINE;
Kayit->OpenKey(sDizin,true);
return Kayit->ReadString(sAnahtar) ;
}
void GenelAyarGoruntule()
{
String sVeriYolu , sKullanici, sSifre, sVeriTabani ;
sVeriYolu = GenelKayitDefterinden_Oku("Software\\Kardesler Bilgisayar\\Teknik Servis","VeriYolu");
sKullanici = GenelKayitDefterinden_Oku("Software\\Kardesler Bilgisayar\\Teknik Servis","Kullanici");
sSifre = GenelKayitDefterinden_Oku("Software\\Kardesler Bilgisayar\\Teknik Servis","Sifre");
sVeriTabani = GenelKayitDefterinden_Oku("Software\\Kardesler Bilgisayar\\Teknik Servis","VeriTabani");
Form1->SQLConnection1->Close();
Form1->SQLQuery1->Close();
Form1->SQLConnection1->Params->Clear();
//Form1->SQLQuery1->SQL->Clear();
Form1->SQLConnection1->ConnectionName = "MySQLConnection";
Form1->SQLConnection1->DriverName = "MySQL";
Form1->SQLConnection1->GetDriverFunc = "getSQLDriverMySQL";
Form1->SQLConnection1->LibraryName = "dbxmys.dll";
Form1->SQLConnection1->VendorLib = "libmysql.dll";
// SQLConnection1->Params lara degerler atıyoruz
Form1->SQLConnection1->Params->Add("DirverUnit=Data.DBXMySQL");
Form1->SQLConnection1->Params->Add("DirverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver180.bpl");
Form1->SQLConnection1->Params->Add("DirverAssemblyLoader=Borland.Data.TBDXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b");
Form1->SQLConnection1->Params->Add("MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxMySQLDriver180.bpl");
Form1->SQLConnection1->Params->Add("MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFactory,Borland.Data.DbxMySQLDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b");
//Form1->SQLConnection1->Params->Add("GetDriverFunc=getSQLDriverMYSQL");
//Form1->SQLConnection1->Params->Add("LibraryName=dbxmysql.dll");
Form1->SQLConnection1->Params->Add("LibraryNameOsx=libsqlmys.dll");
//Form1->SQLConnection1->Params->Add("VendorLib=LIBMYSQL.dll");
Form1->SQLConnection1->Params->Add("VendorLibWin64=libmysql.dll");
Form1->SQLConnection1->Params->Add("VendorLibOsx=libmysqlclient.dylib");
Form1->SQLConnection1->Params->Add("MaxBlobSize=-1");
Form1->SQLConnection1->Params->Add("HostName="+sVeriYolu);
Form1->SQLConnection1->Params->Add("DataBase="+sVeriTabani);
Form1->SQLConnection1->Params->Add("User_Name="+sKullanici);
Form1->SQLConnection1->Params->Add("Password="+sSifre);
Form1->SQLConnection1->Params->Add("BlobSize=-1");
Form1->SQLConnection1->Params->Add("ErrorResourceFile=");
Form1->SQLConnection1->Params->Add("LocaleCode=");
Form1->SQLConnection1->Params->Add("Compressed=");
Form1->SQLConnection1->Params->Add("Encrypted=False");
Form1->SQLConnection1->Params->Add("ConnectionTimeout=60");
Form1->SQLConnection1->Params->Add("ServerCharSet=latin5");
Form1->SQLConnection1->Open();
}
Re: MySql database local bağlantısı
Selam aynı dert bende de var bir türlü SqlConnection ile databaselere local bağlatı kuramadım
odbc de yükledim fakat yine olmadı, yine olmadı...
odbc de yükledim fakat yine olmadı, yine olmadı...
Kod: Tümünü seç
procedure TForm1.Button3Click(Sender: TObject);
begin
SqlConnection1.ConnectionName:='MySQL Direct (Core Lab)';
SqlConnection1.DriverName:='MySQL Direct (Core Lab)';
SqlConnection1.LibraryName:='C:\Users\APlus\Desktop\Test Database\Database\libmysql.dll';
SqlConnection1.VendorLib:='not used';
SqlConnection1.Params.Clear;
SqlConnection1.Params.Add('BlobSize=-1');
SqlConnection1.Params.Add('HostName= C:\Users\APlus\Desktop\Test Database\Database\mydata.sql');
SqlConnection1.Params.Add('DataBase= mydata');
SqlConnection1.Params.Add('DriverName=MySQL Direct (Core Lab)');
SqlConnection1.Params.Add('FetchAll=True');
SqlConnection1.Params.Add('EnableBoolean=False');
end;
En son brs tarafından 14 May 2015 10:59 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: MySql database local bağlantısı
odbcye yüklemene gerek yok
yukarıdaki kodu kendine göre ayarla direk mysql bağlantı kuruyor
sorunsuz çalışıyor
yukarıdaki kodu kendine göre ayarla direk mysql bağlantı kuruyor
sorunsuz çalışıyor
Re: MySql database local bağlantısı
theSinan yazdı:odbcye yüklemene gerek yok
yukarıdaki kodu kendine göre ayarla direk mysql bağlantı kuruyor
sorunsuz çalışıyor

FDConnection ile
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
With FDConnection1 do
begin
LoginPrompt := False;
Params.Clear;
Params.Values['DriverID']:= 'MySQL';
Params.Values['Database']:= '126.1.2.2';
Params.Values['User_Name']:= 'merme';
Params.Values['Password']:= '2348585';
Params.Values['CharacterSet'] := 'utf8';
Connected:= True;
end;
Aynı İşlemi localhostta SqlConnection ile yapmak mümkün değil mi?
Kod: Tümünü seç
procedure TForm1.Button3Click(Sender: TObject);
begin
SqlConnection1.ConnectionName:='MySQL Direct (Core Lab)';
SqlConnection1.DriverName:='MySQL Direct (Core Lab)';
SqlConnection1.LibraryName:='C:\Users\APlus\Desktop\Test Database\Database\libmysql.dll';
SqlConnection1.VendorLib:='not used';
SqlConnection1.Params.Clear;
SqlConnection1.Params.Add('BlobSize=-1');
SqlConnection1.Params.Add('HostName= C:\Users\APlus\Desktop\Test Database\Database\mydata.sql');
SqlConnection1.Params.Add('DataBase= mydata');
SqlConnection1.Params.Add('DriverName=MySQL Direct (Core Lab)');
SqlConnection1.Params.Add('FetchAll=True');
SqlConnection1.Params.Add('EnableBoolean=False');
end;
En son brs tarafından 14 May 2015 11:00 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: MySql database local bağlantısı
tabiki mümkün
ben sVeriYolu değişkenime localhost atadığımda
mysql çalışıyor ancak ip adresi ile baglanmak
daha sorunsuz ve ilerde terminal için ek ayar yapmana gerek kalmıyacaktır
mysqli dışardan gelen bağlantılara aç
ms-dos aç(windows + R)çalıştır (cmd) enter
mysql -u root -p
komutunu vererek mysql bağlantısı kuruyoruz ve aşağıdaki sorguları çalıştırıyoruz
GRANT ALL PRIVILEGES ON *.* TO 'mysqlkullaniciadin'@'%' IDENTIFIED BY 'mysqlsifre' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysq li restart et
sonra güvenlik duvarından mysql portuna (3306) gelen bağlantılara izin ver
ip adresi ile mysql bağlanabilirisin
ben sVeriYolu değişkenime localhost atadığımda
mysql çalışıyor ancak ip adresi ile baglanmak
daha sorunsuz ve ilerde terminal için ek ayar yapmana gerek kalmıyacaktır
mysqli dışardan gelen bağlantılara aç
ms-dos aç(windows + R)çalıştır (cmd) enter
mysql -u root -p
komutunu vererek mysql bağlantısı kuruyoruz ve aşağıdaki sorguları çalıştırıyoruz
GRANT ALL PRIVILEGES ON *.* TO 'mysqlkullaniciadin'@'%' IDENTIFIED BY 'mysqlsifre' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysq li restart et
sonra güvenlik duvarından mysql portuna (3306) gelen bağlantılara izin ver
ip adresi ile mysql bağlanabilirisin
Re: MySql database local bağlantısı
Hocam sanırım ben sizi anlayamadım yada derdimi iyi anlatamadım xe5 yapmış olduğumtheSinan yazdı:tabiki mümkün
ben sVeriYolu değişkenime localhost atadığımda
mysql çalışıyor ancak ip adresi ile baglanmak
daha sorunsuz ve ilerde terminal için ek ayar yapmana gerek kalmıyacaktır
mysqli dışardan gelen bağlantılara aç
ms-dos aç(windows + R)çalıştır (cmd) enter
mysql -u root -p
komutunu vererek mysql bağlantısı kuruyoruz ve aşağıdaki sorguları çalıştırıyoruz
GRANT ALL PRIVILEGES ON *.* TO 'mysqlkullaniciadin'@'%' IDENTIFIED BY 'mysqlsifre' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysq li restart et
sonra güvenlik duvarından mysql portuna (3306) gelen bağlantılara izin ver
ip adresi ile mysql bağlanabilirisin
projemem (C:\Users\APlus\Desktop\Test) klasör içinde aynı klasöre mysql databaseleri ekledim ama bir türlü projem ile database arasında bağlantıyı kuramadım bunu nasıl sağlarım...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: MySql database local bağlantısı
Şu an evdeyim telden yazıyorum
İlk mesajımda verdiğim fonksiyon ile c++ projede mysql veri tabanına bağlantı kuruluyor Pascal bilmedigim den delphi ceviremiyorum fonksiyonu kopya yapıştır Pascal çevir yine bağlantıda sorun yaşıyorsanız libmysql.dll dosyanız pcnizde kurulu mysql versiyonuyla uyumlu değil
Pcnizde kurulu Mysql versiyonu nedir
Hangi işletim sistemi kullanıyor sunuz
Telden yazıyorum yanımda şu an pc yok
Yarın benim pcdeki libmysql.dll upload edeyim
Tekrar denersiniz
İlk mesajımda verdiğim fonksiyon ile c++ projede mysql veri tabanına bağlantı kuruluyor Pascal bilmedigim den delphi ceviremiyorum fonksiyonu kopya yapıştır Pascal çevir yine bağlantıda sorun yaşıyorsanız libmysql.dll dosyanız pcnizde kurulu mysql versiyonuyla uyumlu değil
Pcnizde kurulu Mysql versiyonu nedir
Hangi işletim sistemi kullanıyor sunuz
Telden yazıyorum yanımda şu an pc yok
Yarın benim pcdeki libmysql.dll upload edeyim
Tekrar denersiniz
Re: MySql database local bağlantısı
@theSinan
- local'de MySQL server kurmadan veritabanına bağlanmaktan, yani Embedded MySQL'den bahsediyor sanırım. O konuda anlaşılmadığını tahmin ediyorum.
@brs

Konu hakkında bilgi için bkz. Embarcadero
Başaramazsanız ben daha önce bir çok kere kullandım, uygun bir zamanda bir örnek proje hazırlarım. Şimdi İstanbul'a seyahatim var yarın, ona hazırlanıyorum. Başka birine mesaj yazarken mesajınız dikkatimi çekti.
Özetle
(*) Önce mysql-noinstall-5.1.73-win32 gibi bir paket indir. İçinde Embedded klasöründeki DLL'yi alacaksın. Herhangi bir kurulum yapmanıza lüzum yok. DLL'yi de burada mesaj ekinde verirdim ama 250 kb sınırı var...
(1) FDPhysMySQLDriverLink nesnesini Release komutu ile bağlantıyı kapatırsın.
(2) şeklinde DLL'inin yerini bildirirsin.
(3) EmbeddedArgs içerisine bilgilerini gömersin.
(4) FDConnection'a gelir Parametrelerine
bilgilerini girersin.
(5) Connected := True; yapar FDQuery'e geçersin.
(6) Örnek olarak Tablo yoksa Create etsin şeklindeki yapıyı da vereyim.
(7) SELECT satırlarını yazarsın.

- local'de MySQL server kurmadan veritabanına bağlanmaktan, yani Embedded MySQL'den bahsediyor sanırım. O konuda anlaşılmadığını tahmin ediyorum.
@brs
demişsin ya, local'de de FDConnection kullansanız ya... Onunla Embedded MySQL bağlantınızı ( sadece tek bir libmysqld.dll kullanarak ) local olarak yapabilirsiniz.brs yazdı:FireDAC ile yani FDConnection ile
nette bulunan databaselere ulaşbiliyorum
Aynı İşlemi localhostta SqlConnection ile yapmak mümkün değil mi?

Konu hakkında bilgi için bkz. Embarcadero
Başaramazsanız ben daha önce bir çok kere kullandım, uygun bir zamanda bir örnek proje hazırlarım. Şimdi İstanbul'a seyahatim var yarın, ona hazırlanıyorum. Başka birine mesaj yazarken mesajınız dikkatimi çekti.

Özetle
(*) Önce mysql-noinstall-5.1.73-win32 gibi bir paket indir. İçinde Embedded klasöründeki DLL'yi alacaksın. Herhangi bir kurulum yapmanıza lüzum yok. DLL'yi de burada mesaj ekinde verirdim ama 250 kb sınırı var...
(1) FDPhysMySQLDriverLink nesnesini Release komutu ile bağlantıyı kapatırsın.
(2)
Kod: Tümünü seç
DriverID := 'MySQL';
VendorLib := ExtractFilePath(Application.Exename) + '\LIBMYSQLD.DLL';
(3) EmbeddedArgs içerisine
Kod: Tümünü seç
--basedir=
--datadir=
--language=
--skip-innodb
--skip-networking
(4) FDConnection'a gelir Parametrelerine
Kod: Tümünü seç
DriverID
CharacterSet
Database
(5) Connected := True; yapar FDQuery'e geçersin.
(6) Örnek olarak Tablo yoksa Create etsin şeklindeki yapıyı da vereyim.
Kod: Tümünü seç
With FDQuery do
begin
Active := False;
Connection := FDConnection;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS KullaniciTablosu ( ' );
SQL.Add( 'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY' );
SQL.Add( ', Kullanici_Adi VARCHAR(100) ' );
SQL.Add( ', Kullanici_ePosta VARCHAR(100) ' );
SQL.Add( ' )' );
SQL.Add( 'CHARACTER SET latin5 COLLATE latin5_turkish_ci;');
ExecSQL;
SQL.Clear;
SQL.Add( 'SELECT * FROM KullaniciTablosu' );
Active := True;
end;

- Dosya ekleri
-
- KullaniciTablosu.rar
- Örnekteki MySQL Tablosu ( Embedded Create edildi ve veri Insert edildi )
- (760 Byte) 164 kere indirildi
Re: MySql database local bağlantısı
Sayın Hocam bende çözemedim size zahmet örnek proje hazırlaya bilir misiniz sırf bu yüzden Sqlite öğrenmeye başladım...
En son hido tarafından 15 Nis 2014 01:18 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: MySql database local bağlantısı
Şu an yoldayım, akşam otelde örnek hazırlar buradan linkini paylaşırım.
Re: MySql database local bağlantısı
Örneğiniz hazır...
libmysqld.dll dosyası EXE klasöründedir. Orada bulunmasına özen gösterirseniz sorun çıkmadan çalışır.

Bu linkten indirebilirsiniz.
Kaynak Kodları:

libmysqld.dll dosyası EXE klasöründedir. Orada bulunmasına özen gösterirseniz sorun çıkmadan çalışır.


Bu linkten indirebilirsiniz.
Kaynak Kodları:
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
FDConnection1.Close;
With FDPhysMySQLDriverLink1 do
begin
Release; // Var olan bağlantıları kapatır.. (yenisi için hazırlık için)
DriverID := 'MySQL';
VendorLib := ExtractFilePath(Application.Exename) + '\LIBMYSQLD.DLL';
EmbeddedArgs.Text := ''
+ '--basedir=' + ExtractFilePath(Application.Exename) +';'
//'datadir' ile verilen yerde bulunen her alt klasör birer Veritabanıdır.
// onların da altında fiziksel tablolar olacak.
+ '--datadir=' + ExtractFilePath(Application.Exename) +'\DATA;'
+ '--language=' + ExtractFilePath(Application.Exename) +';'
+ '--skip-innodb;'
+ '--skip-networking;'
;
end;
With FDConnection1 do
begin
Connected := False;
LoginPrompt := False;
Params.Clear;
Params.Values['DriverID'] := 'MySQL';
Params.Values['CharacterSet'] := 'utf8';
// Database ise aslı astarı yukarıda verilen "datadir" içindeki bir klasördür...
Params.Values['Database'] := 'VERITABANI';
Connected := True;
end;
With FDQuery1 do
begin
Active := False;
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS KullaniciTablosu ( ' );
SQL.Add( 'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY' );
SQL.Add( ', Kullanici_Adi VARCHAR(100) ' );
SQL.Add( ', Kullanici_ePosta VARCHAR(100) ' );
SQL.Add( ' )' );
SQL.Add( 'CHARACTER SET latin5 COLLATE latin5_turkish_ci;');
ExecSQL;
SQL.Clear;
SQL.Add( 'SELECT * FROM KullaniciTablosu' );
Active := True;
end;
DataSource1.DataSet := FDQuery1;
DBGrid1.DataSource := DataSource1;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
With TFDQuery.Create(nil) do
begin
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'INSERT INTO KullaniciTablosu ' );
SQL.Add( '( Kullanici_Adi, Kullanici_ePosta )' );
SQL.Add(' VALUES ' );
SQL.Add(' ( '+ QuotedStr( Edit1.Text ) + ', '+QuotedStr( Edit2.Text )+ ' ) ' );
ExecSQL;
Free;
end;
FDQuery1.Active := False;
FDQuery1.Active := True;
end;

Re: MySql database local bağlantısı
Eline Sağlık Mrmarman hocam
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...