"MQL5'ten (MQL4) MySQL Veritabanına Nasıl Erişilir" makalesi için tartışma - sayfa 13

 
Pavel Kolchin:

win 7 x64 - mt5 x64 son sürüm (v5 b1455)

MySQL'e ulaşamıyorum, ama bu üzücü değil.

Sunucu: UNIX soketi üzerinden localhost

Sunucu türü: Percona Server

Sunucu Sürümü: 5.5.35-33.0-log - Percona Server (GPL), Sürüm rel33.0, Revizyon 611

Protokol Sürümü: 10

Kullanıcı: ***

Sunucu kodlaması: UTF-8 Unicode (utf8)

mql4'te çalışır
Hata yeniden üretildi. Bunu çözeceğim...
 

İşte MQL5 için yeniden derlenmiş x64

Pavel dene.

Dosyalar:
MQL5_x64.zip  1412 kb
 
Eugeniy Lugovoy:


dll bağlantısında artık sorun yok

her şey çalışıyor, teşekkürler

 
Pavel Kolchin:

dll bağlantısında artık sorun yok

her şey çalışıyor, teşekkürler

Yardım etmekten her zaman mutluluk duyarım.

Projelerinizde iyi şanslar.

 
Yuriy Asaulenko:

Teşekkürler, okudum. Şu anki makalenin yazarının çok güzel bir tespiti var, kim geldi,..... ve her şeyi mahvetti).


Ben de birden fazla kez çarpışma sorunuyla karşılaştım. Örneğin, bir ticaret robotu farklı grafiklere bağlıysa, ancak tek bir taban kullanıyorsa ve erişim genel amaçlı bir tabloya (örneğin oturumların, hesapların kaydı / değiştirilmesi) ise, her durumda "tablo kilitli" gibi bir hata alırsınız. Ve tüm işlemlerin tamamlanmış, imleçlerin kapatılmış ve veritabanının paylaşımlı modda açılmış olması önemli değildir.


Yorumcu muhtemelen tüm çarpışmaları kilitli mod için derleme yoluyla veya pragma yoluyla çözen sqlite ayarlarını anlamamış.

Birkaç yıldır eşzamanlı okuma/yazma multithreading ile ağır projeler üzerinde çalıştığımı ve hiçbir sorun olmadığını söyleyebilirim, asıl önemli olan düz ellere sahip olmaktır.

 
o_O:

Yorumcu muhtemelen tüm çarpışmaları kilitli mod için derleme veya pragma yoluyla çözen sqlite ayarlarını anlamamış.

Birkaç yıldır eşzamanlı okuma/yazma multithreading ile ağır projeler üzerinde çalıştığımı ve hiçbir sorun olmadığını söyleyebilirim, önemli olan düz ellere sahip olmak.

o_O

Eğer bir şey olursa SQLite için bu projeyi alabilirim, test betikleri/EA yazabilirim ve eğer tekrar kilitlenme olursa, bunu birlikte çözebiliriz (eğer sakıncası yoksa) ve topluluğa bir yazılım çözümü sunabiliriz.

DB'nin bazı avantajları (özerklik, SQL, mobilite, gömülebilirlik, vb.) olduğu için buna dikkat etmeye değer olabilir.

Aslında, SQLite'dan hazır bir DLL aldım (kaynak kodu değil) ve yeniden derlemedim, sadece C++ API ile çalıştım.

 
Eugeniy Lugovoy:

o_O

Eğer bir şey olursa SQLite için bu projeyi alabilirim, test betikleri/EA yazabilirim ve eğer yine kilitler varsa, bunu birlikte çözebiliriz (eğer sakıncası yoksa) ve topluluğa bir yazılım çözümü sunabiliriz.

DB'nin bazı avantajları (özerklik, SQL, mobilite, gömülebilirlik, vb.) olduğu için buna dikkat etmeye değer olabilir.

Aslında, SQLite'dan hazır bir DLL aldım (kaynak kodu değil) ve yeniden derlemedim, sadece C++ API ile çalıştım.

SQLite kilitleme "efsanesinin" doğrulanması ya da ortadan kaldırılması gerçekten ilginç olurdu. Eğer bu belirsizlik ya da bu belirsizliği giderecek çözümler olmasaydı, SQlite birlikte çalışabilirlik için çok cazip bir seçenek olurdu. Örneğin Access ile aynı veritabanına kıyasla performansı hakkında da bir şeyler bilmek ilginç olurdu. Tabii ki, eğer birisinin böyle bir çalışma yapmak için gerçek zamanı ve isteği varsa.

Tabanı, Access, SQL Server, Oracle ve benzeri herhangi bir veritabanına bağlanabilen üçüncü taraf yazılımlara bağlama konusunda hala sorular var. SQLite'ın OLEDB ya da en azından ODBC gibi bilgisayarda yüklü bir sürücüsü var mı? Ve aynı Access'te birkaç uygulama herhangi bir sorun olmadan farklı arayüzler aracılığıyla eşzamansız olarak aynı veritabanına yazabilir-okuyabilir. Bunun SQLite ile çalışmayabileceğinden şüpheleniyorum.

 
Yuriy Asaulenko:

SQLite kilitleme "efsanesinin" doğrulanması ya da ortadan kaldırılması gerçekten ilginç olurdu. Bu belirsizlik veya bunu ortadan kaldıracak çözümler olmasa, SQlite birlikte çalışabilirlik için çok çekici bir seçenektir. Örneğin Access ile aynı veritabanına kıyasla performansı hakkında da bir şeyler bilmek ilginç olurdu. Tabii ki, eğer birisinin böyle bir işi yapmak için gerçek bir zamanı ve isteği varsa.

Tabanı, Access, SQL Server, Oracle ve benzeri herhangi bir veritabanına bağlanabilen üçüncü taraf yazılımlara bağlama konusunda hala sorular var. SQLite'ın OLEDB ya da en azından ODBC gibi bilgisayarda yüklü bir sürücüsü var mı? Ve aynı Access'te birkaç uygulama herhangi bir sorun olmadan farklı arayüzler aracılığıyla eşzamansız olarak aynı veritabanına yazabilir-okuyabilir. Bunun SQLite ile çalışmayabileceğinden şüpheleniyorum.

SQLite için OLEDB mevcut, sadece google'da arayın. Bu arada, OLEDB üzerinden SQLite'a konumlandırma hakkında test betikleri çalıştırmak ilginç bir fikir.... Elbette sapıkça, ama burada hepimiz sapığız....

Yerel erişim konusunda ise, ortak çabalarla olumlu bir sonuç elde edebileceğimize inanıyorum. Bu sadece bir zaman meselesi, bu hafta yapamayacağım... belki hafta sonu biraz zaman ayırabilirim...

 
Eugeniy Lugovoy:

SQLite için OLEDB mevcuttur, sadece google'da arayın. Bu arada, SQLite'a OLEDB üzerinden loc hakkında test betikleri çalıştırmak için ilginç bir fikir.... Elbette sapıkça, ama burada hepimiz sapığız....

Ve yerel erişim konusunda, ortak çabalarla olumlu bir sonuç elde edebileceğimize inanıyorum. Bu sadece bir zaman meselesi, bu hafta yapamayacağım... belki hafta sonu zaman ayırabilirim...

Bir veritabanı oluşturan ve içine birçok tabloda büyük miktarda bilgi yazan (okumayan) bir uygulamam var. Bilgisayarda yüklü olan ve uygulama ayarlarından görülebilen bir OLEDB sürücüsü bulabilirsem, SQLite 'ın takılıp takılmadığını kolayca test edebilirim. Benzer şekilde, SQLite'a aynı Access ile bağlanabilir ve tabloları paralel olarak okumayı ve değiştirmeyi deneyebilirsiniz. Ölçülecek bir şey elbette mümkün olmayacaktır.

İnternet üzerinden baktım. Bir kerede böyle bir OLEDB sağlayıcısı bulamadım. Anladığım kadarıyla sadece programlama dillerinden kullanılabilen daha fazla OLEDB DLL'leri.

 

her zaman ortaya çıkmaya başladı, bu ne anlama geliyor?

Kodumu bu satırda çalıştırdığımda.

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);