Comment accéder à la base de données depuis MQL4 , ORACL , MSSQL, MySQL - page 7

 
toxa.forex писал(а) >>

Bonjour Messieurs, j'ai déjà posé une question dans un fil parallèle, mais je vais probablement la répéter...

MySQL restreint le nombre maximal de colonnes pures dans une table, pour être plus précis, le nombre maximal possible de colonnes est de 1000, quelqu'un sait-il comment supprimer cette restriction et est-ce même possible ? Sinon, quelle base de données vous permet de créer des tables de plus de 3000 colonnes ?

Beaucoup de colonnes ? La base de données est donc mal conçue - elle doit être normalisée.

 
Itso >> :

Beaucoup de colonnes ? Cela signifie que la base de données est mal planifiée - vous devez la normaliser.

Itso, je ne suis pas sûr que vous ayez lu le post précédent, alors je vais répéter - la normalisation de la base de données ne mènera à rien... La normalisation est nécessaire pour éliminer les redondances, cette base de données n'est pas redondante, respectivement, il n'y a pas besoin de l'amener à NF, de toute façon, la solution est trouvée ... Ce n'est pas le plus joli à mon avis, mais il n'y a pas encore d'autres options - utiliser un masque de bits... Comme les colonnes pouvaient prendre les valeurs 1|0, il a été décidé d'utiliser une colonne avec un bitmask de 0 et 1...

Quoi qu'il en soit, merci

 
TheVilkas >>:


string CommandText="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid) "+
"VALUES("+TimeCurrent()+",'"+Company+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Bid+")";
Execute(CommandText,adAsyncFetch);
Sleep(15);


Comment lire dans la base de données ?
 
Twilight писал(а) >>

Comment lire dans la base de données ?

Sélectionnez

 
Itso >>:

Select


Je suis familier avec SQL lui-même

string Company=AccountCompany() ;
string Symb=Symbol() ;

L'insertion dans la base de données fonctionne
//string CommandText="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid) "+
//"VALUES("+TimeCurrent()+",'"+Company+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Bid+")";
//string CommandText="INSERT INTO [test].[dbo].[test] ([test]) VALUES (22)" ;

Mais je ne suis pas familier avec l'échantillonnage.


string CommandText="SELECT [test] FROM [test].[dbo].[test] where test=5" ;
chaîne test3 ;
test3=Exécuter(CommandText,adAsyncFetch) ;

Commentaire(test3) ;
Sommeil(15) ;



Rendement 1


J'ai essayé de modifier le deuxième paramètre de Execute(CommandText,adAsyncFetch) en ces termes

adCmdText(1) - définition textuelle de la commande ou de la procédure stockée.
adCmdTable(2) - crée une requête SQL qui renvoie toutes les lignes de la table spécifiée.
adCmdStoredProc(4) - Procédure stockée.
adCmdUnknown(8) - type de commande inconnu (par défaut).
adAsyncExecute(16) - exécution asynchrone de la commande.
adExecuteNoRecords(128) - ne renvoie pas de chaînes de caractères.

Il produit toujours cette fichue chose.

Je pense que Execute renvoie un tableau de données et qu'il doit être traité d'une manière ou d'une autre.

 

il y a un exemple à la page 5 et un autre à la page 6

 
sergeev >>:

тут же на 5 странице пример и на 6 ещё один



aux pages 5 et 6 un exemple avec My SQL et une autre bibliothèque

Et je discute pour MS SQL avec la bibliothèque ADOLIB.

L'exemple avec ADolib ne contient que le chargement dans une base de données et le déchargement, car je ne sais pas comment faire.

 

Quelqu'un sait-il comment mettre en œuvre la lecture à partir de MS SQL ?

Veuillez m'aider à résoudre ce problème.

 
Twilight >>:


Vous pouvez bien sûr utiliser l'option MySQL, mais lors de la lecture des données de la base, des hiéroglyphes sont affichés devant la valeur
 

Qu'avez-vous à dire exactement sur MS SQL ?

Donnez-moi le code et montrez-moi où il ne fonctionne pas, et nous allons examiner la question.

Raison: