[英]Singleton pattern and server connection using excel-DNA
我有一個SQL
數據庫。
然后在一個類中,我有一個ExcelFunction
:
[ExcelFunction(Description = "fonction de recherche")]
public static double id(string _isin)
{
double res;
res =DBSQL.Instance.getID(_isin);
return res;
}
然后在另一個類中,我進行了連接並創建了單例模式(為了在多線程的情況下保持安全)。 這個想法可能不清楚,只是問我,我會盡力解釋。 關鍵是要打開一個連接(使用單例模式),然后執行請求,然后刪除單例以關閉連接。
這是我的代碼:
public class DBSQL : iAccesDB1
{
private SqlConnection MaConn = new SqlConnection("sefhgoefhouzeyf");
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 tD 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;
}
}
問題是它不起作用-在我的excel單元中,我有以下內容:VALUE?
當您的Excel-DNA函數將#VALUE返回給Excel時,這可能意味着存在未處理的異常。
我建議您更改頂級函數以返回一個“對象”,如果存在異常,該對象將返回錯誤字符串,如下所示:
[ExcelFunction(Description = "fonction de recherche")]
public static object id(string _isin)
{
try
{
double res;
res = DBSQL.Instance.getID(_isin);
return res;
}
catch (Exception ex)
{
return "!!! ERROR: " + ex.ToString();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.