Olymars
Olymars
Olymars est le nom de code de "SQL Server Centric .NET Code Generator".
Ce produit, développé mais non supporté par Microsoft, permet de gagner du temps lors d’un développement .Net avec SQL Server 2000.
Pascal Belaud, son développeur, présente son outil lors de séminaires d’une journée. Le laboratoire des technologies .Net de Supinfo était présent à l’une d’elles le 7 mars, et a fortement apprécié la qualité des démonstrations.
Si vous êtes intéressé, vous pouvez vous inscrire gratuitement à une session sur le site de Microsoft : http://www.microsoft.com/france/events/default.asp
Auteur de l'article : Antoine Zulke.
Présentation
Le principe d’Olymars :
L’idée d’Olymars vient du fait qu’indépendamment de la structure et du contenu des bases de données en général, une énorme partie du code généralement développé autour de ces bases de données possède un caractère fortement redondant.
Olymars est donc un outil qui permet d’écrire du code générique qui pourra s’appliquer à n’importe quelle table ou procédure stockée. Le code généré peut être dans n’importe quel langage : T-SQL, C#, VB.Net, …
Cependant, Olymars possède déjà de nombreux « templates » développés dans le but de vous faire gagner du temps et beaucoup de sueur !
Lors du séminaire, Pascal Belaud a annoncé qu’il se préparait au développement d’une V2 d’Olymars, probablement pour dans 1 ans et demi. Nous avons vu que pour le moment, Olymars génère du code de n’importe quel type à partir de tables ou procédures stockées SQL Server. La V2 permettrai de générer n’importe quel type de code à partir de n’importe quel type de code en entrée ! C'est-à-dire que vous pourrez créer par exemple du code générique pour des fichiers word, des sites web, d’autres types de base de données, …
Pascal Belaud qualifie la puissance d’Olymars de « limitée uniquement par l’imagination ». La version 2 donnerai alors une nouvelle envergure à cette caractéristique !
Mais tout ceci est bien abstrait, et voyons concrètement à quoi peut vous servir Olymars aujourd’hui :
Vous avez Visual Studio .Net ainsi qu’une base de données SQL Server existante. Vous désirez réaliser une Application Windows ou bien un site Web ASP.Net, en relation avec votre base de données.
Ce « générateur de code » peut alors intervenir à plusieurs niveaux afin de vous aider dans votre tache :
- Olymars vous génère un ensemble de procédures stockées standard dans votre base de données. Les plus utiles sont celles qui permettent la sélection, l’insertion, la modi fication et la suppression dans une table. Vous pouvez donc créer votre application .Net sans avoir besoin d’écrire de SQL.
- A partir de ces procédures stockées, Olymars vous génère des assemblies qui gèrent la connexion à la base de données et les requêtes.
Vous accédez alors à des classes propres à votre base de données qui vous économisent beaucoup de développement ADO.Net.
- A partir des assemblies : Olymars vous permet de créer directement votre application Windows ou bien votre site Web ASP.Net, toujours propres à votre base de données que vous pouvez alors mettre à jour.
- A partir des assemblies : Olymars vous permet de créer des composants dans Visual Studio .Net. Vous pouvez par exemple glisser/déposer une combo box qui liste le contenu d’une table de votre base de données.
- Olymars fournit un outil permettant de documenter sa base de données rapidement dans les « extended properties » de SQL Server. Une fois les commentaires saisis, une documentation complète de la base peut être générée.
- Il est possible de personnaliser soi-même l’ensemble du code généré. C'est-à-dire que vous pouvez écrire des procédures stockées, classes et composants qui pourront être directement réutilisables avec n’importe quelle base de données.
Installation d’Olymars :
Olymars nécessite préalablement SQL Server 2000 Service Pack 1 ainsi que Visual Studio .Net. Vous pouvez télécharger Olymars ainsi que le tutorial à cette adresse : http://www.microsoft.fr/olymars/webupdate.xml.
Une aide en anglais se trouve dans le fichier help.chm du répertoire d’installation d’Olymars. Allez à la section « Quickstart – How to install this product » pour procéder à l’installation.
Cette installation consiste à créer un « repository » qui est utilisée par Olymars de manière transparente.
Sur ce site vous pouvez également télécharger un tutorial, qu’il est conseillé de suivre au début. Il vous installe une base de données de démonstration et vous montre pas à pas l’ensemble des fonctionnalités du produit.
SQLCodeGenDotNet vous demande tout d’abord de vous connecter au repository. Ensuite vous devez vous connecter à votre propre base de données : Main - Connect to a database.

Une fois connecté à votre base de données, les champs grisés du menu seront disponibles et vous pourrez profiter des possibilités d’Olymars.Nous verrons par la suite comment utiliser dans le détail chacune de ces fonctionnalités.
Conclusion
Olymars est un outil puissant et complet pour un développeur .Net qui désire gagner du temps à l’aide d’un code généré de qualité.
Les générations de code sont séparées en de nombreuses étapes, ce qui vous permet d’intervenir personnellement à tous les niveaux.
Génération des procédures stockées
Les différentes procédures stockées qui peuvent être générées
Un certain nombre de procédures stockées standard peuvent être générées. Il est important de voir que chaque procédure stockée est propre à une table.
Par exemple, il existe une procédure standard permettant de supprimer un ou plusieurs enregistrements dans une table. Son nom est « spD_nomdelatable », et le code T-SQL est propre à cette table.
J’ai créé une table « users » telle qu’illustré ci-dessous :

Voici maintenant le code T-SQL de la procédure standard permettant de supprimer un ou plusieurs éléments dans la table users :
Create Procedure [spD_users]
-- Delete a specific record from table [users]
(
@num [int] = Null -- for [users].[num] column
)
-- Returns the number of deleted records
As
/*
This T-SQL code was automatically generated using:
SQL Server Centric .NET Code Generator
v 1.0.1070.23427
Generation Date: 24/01/2003 11:45:21
Generator name:
Template last update: 24/06/2002 01:53:57
Template revision: 15083637
SQL Server version: 08.00.0194
Server: MMTPC
Database: [test]
WARNING: This source is provided "AS IS" without warranty of any kind.
The author disclaims all warranties, either express or implied, including
the warranties of merchantability and fitness for a particular purpose.
In no event shall the author or its suppliers be liable for any damages
whatsoever including direct, indirect, incidental, consequential, loss of
business profits or special damages, even if the author or its suppliers
have been advised of the possibility of such damages.
*/
-- IMPORTANT:
-- Changes to this SQL code may cause incorrect behavior
-- and will be lost if the code is regenerated.
Set NoCount On
Delete From [dbo].[users]
Where
((@num Is Null) Or ([num] = @num))
Set NoCount Off
Return(@@RowCount)
GO
D’autres procédures stockées existent afin de faire des requêtes de type SELECT, UPDATE, INSERT, etc. Je vous invite à consulter la documentation d’Olymars à la section « Built-in groups – SQL Server 2000 Stored Procedures » qui détaille chacune des procédures disponibles.
Comment générer ces procédures ?
Vous devez exécuter Olymars (SQLCodeGenDotNet.exe), vous connecter au repository de l’installation puis à votre propre base de données via le menu « Main – Connect to a database » ou ctrl+D.
Une fois connecté, vous lancez le générateur de code via le menu « Main – Generate code » ou ctrl+G.
Dans « Groups » vous avez le choix entre tous les types de code qui peuvent être générés par Olymars. Choisissez ici « SQL Server 2000 Stored Procedures » qui est déjà sélectionné par défaut. En dessous vous avez deux onglets : Generate et Status. Generate permet de lancer la génération du code et Status affiche un rapport (liste des objets générés avec les erreurs éventuelles).
Dans l’onglet Generate, vous trouvez un premier cadre « Elements » dans lequel vous cochez les types de procédures standard que vous voulez générer.
En dessous vous trouvez un deuxième cadre « Tables » dans lequel se trouvent vos tables. Cochez celles pour lesquelles vous voulez générer au moins une procédure stockée.
Enfin, le troisième cadre « SQL Server objects to be created » vous liste l’ensemble des procédures à générer : un type de procédure + une table forme une procédure.
Cliquez sur « Check » afin de lister ces procédures.
Une fois que les procédures stockées choisies sont cochées, cliquez sur « Generate ». L’opération peut prendre un peu de temps selon le nombre d’objets à créer. Olymars vous renvoie directement dans l’onglet « Status » afin d’observer la réussite de votre génération de code.
Certaines procédures stockées requièrent certains critères comme des clés primaires ou secondaires. Le rapport peut donc vous a f ficher des warnings si une de vos tables ne les remplit pas.
Un exemple d’utilisation
Je désire créer un formulaire de saisie me permettant d’ajouter des utilisateurs dans ma table « users », à l’aide d’une Windows application en C#.
Je glisse donc 2 labels, 2 textBox et un bouton dans mon application :

Ensuite je créé une « data connection » vers ma base de données nommée sqlConnection1.
J’ajoute également le namespace suivant : using System.Data.SqlClient;
Voici le code du bouton (évenement" Click") :
private void button1_Click(object sender, System.EventArgs e)
{
SqlCommand myCommand;
sqlConnection1.Open();
// j’exécute la procédure stockée générée par Olymars en lui passant comme paramètre NULL
// pour la clé primaire (en auto incrément), puis les valeurs du nom et du prénom.
myCommand = new SqlCommand("Execute spI_users NULL, '" + textBox_nom.Text + "','" + textBox_prenom.Text + "'",
sqlConnection1);
myCommand.ExecuteNonQuery();
textBox_nom.Text = "";
textBox_prenom.Text = "";
sqlConnection1.Close();
}
Conclusion
On peut remarquer qu’Olymars n’est pas encore très utile à ce stade, car le temps n’est gagné que sur l’écriture des procédures stockées.
Dans l’article suivant, au chapitre : « Génération d’assemblies capables d’appeler les procédures stockées standard », nous verrons comment gagner du temps sur l’écriture du code ADO.Net.