Bonjour a tous, je bloque un peu dans un programme qui créé un addin excel (via excel-DNA, mais normalement ca ca va), pour aller requeter sur une DB. je souhaite utiliser le pattern du singleton pour faire mes connecxons, mais je ne vois pas comment structurer mon code (ou placer la connection). Si vous pouviez m'aider ca serait vraiment cool.
Voila ma fonction d'appel :

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
namespace ClassLibrary
{
    public class MyFunctions
        {
 
        [ExcelFunction(Description = "fonction de recherche")]
        public static double id(string _isin)
            //module excel
        {
 
            double res;
 
            //res= "id= " + B.getID(_isin);
            res = DBSQL.Instance.getID(_isin);
 
            return res;
        }
    }
 
}


et voila la class ou je bug :

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
 
 
 
 
 
namespace AccesDB
{
    public class DBSQL : iAccesDB1
    {
        private SqlConnection MaConn = new SqlConnection("ezklhfgpiqhgbfozhg");
 
        private static volatile DBSQL instance;
        private static object syncRoot = new Object();
 
        private DBSQL() {}
 
        public static DBSQL Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        if (instance == null)
 
                            instance = new DBSQL();
                    }
                }
                return instance;
             }
 
        }
 
 
        public void Connection()
        {
            MaConn.Open();
        }
 
        public void CloseConnection()
        {
            MaConn.Close();
        }
 
 
        public double getID(String _isin)
        {
            SqlDataReader rd;
            double res = -9999;
 
 
            SqlCommand cd = new SqlCommand("select cpn from tbassetOLD where isin='" + _isin + "'", MaConn);
 
            try
            {
                rd = cd.ExecuteReader();
 
                if (rd.HasRows)
                {
                    while (rd.Read())
                        res = double.Parse(rd["cpn"].ToString());
                }
 
 
            }
            catch (Exception ex)
            {
                throw new Exception("1000: " + ex.Message);
            }
 
            return res;
 
        }
 
 
    }
}
Merci a tous !