salut à tous,
j'ai réalisé une application c#/SQLServer qui fonctionne bien, mais depuis que je suis passé à l'indépendance vis à vis du type de base de données, je ne sais pas quel stratégie adopté pour mes requètes paramètrés.
En gros, j'ai un objet commande qui dans un premier temps se prépare (définition du nom et du type des paramètres) puis plus loin dans le code je lui renseigne les valeurs des paramètres et je l'exécute. ces 2 parties se font dans 2 méthodes différentes.
Voila mon code actuel, qui me parait complètement absurde (je pense que la je part tout l'intérèt de "préparer" la commande)
Méthode de préparation de l'objet commande "cmdNonQuery"
Méthode d'exécution de la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 IDbDataParameter parameter; string[] paramsName = { "@id", "@ref", "@name", "@prtref", "@prtid", "@publish" }; DbType[] paramsType = { DbType.Int32, DbType.String, DbType.String, DbType.String, DbType.Int32, DbType.Boolean }; for (int i = 0; i < 6; i++) { parameter = cmdNonQuery.CreateParameter(); parameter.ParameterName = paramsName[i]; parameter.DbType = paramsType[i]; cmdNonQuery.Parameters.Add(parameter); } cmdNonQuery.Prepare();
Je pense bien qu'il y'ait une meilleur solution mais je n'arrive pas à la trouver
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 IDbDataParameter parameter; for (int i = 0; i < 6; i++) { parameter = (IDbDataParameter)cmdNonQuery.Parameters[i]; switch (i) { case 0: parameter.Value = int.Parse(id); break; case 1: parameter.Value = reader.GetValue(0).ToString(); break; case 2: parameter.Value = reader.GetValue(1).ToString(); break; case 3: parameter.Value = reader.GetValue(2).ToString(); break; case 4: parameter.Value = parentId; break; case 5: parameter.Value = true; break; } cmdNonQuery.Parameters[i] = parameter; } cmdNonQuery.ExecuteNonQuery();
Merci de votre aide!
Partager