2012-03-16 112 views
0

使用DLL訪問數據庫是否明智當應用程序啓動時。創建DLL以訪問數據庫c#

這是代碼,我在每一個頁面中調用我的應用程序

SqlConnection myConnection = new SqlConnection(); 
    myConnection.ConnectionString = "Data Source=CRYSTAL5\\INSTANCE1;Initial Catalog=Pharmacy;Integrated Security=True"; 
    myConnection.Open(); 

和DLL的代碼我寫

public class DBConnect 
    { 
     public DBConnect() 
     { 
      Initialize(); 
     } 
     private SqlConnection connection; 
     //Constructor 


    //Initialize values 
    private void Initialize() 
    { 
     string connectionString; 
     connectionString = "Data Source=CRYSTAL5\\INSTANCE1;Initial Catalog=Pharmacy;Integrated Security=True"; 

     connection = new SqlConnection(connectionString); 
    } 

然後我在我的應用程序添加using DBCon;想跑這代碼

DBConnect myConnection = new DBConnect(); 
     SqlCommand myCommand = new SqlCommand("select doc_fname,doc_lname,gender,department,education ,NMC_no from ph.doctor_info where unit_id =0", myConnection); 

它不起作用。

遺憾的糟糕描述

的最好重載方法匹配「System.Data.SqlClient.SqlCommand.SqlCommand(字符串,System.Data.SqlClient.SqlConnection)」具有一些無效參數
是誤差我得到

我會做什麼沒有堆棧溢出。

+0

如果你問爲什麼這條線路失敗,你可以發佈更多的代碼?是否調用過Initialize()? – Jason 2012-03-16 09:26:23

+1

「它不會工作」不是很有幫助。發生了什麼,你期望會發生什麼?你有錯誤信息嗎? – Heinzi 2012-03-16 09:28:26

+0

@Jason Typo現在更新 – deception1 2012-03-16 09:31:07

回答

1

您正在將類型爲「DbConnect」的對象傳遞給SqlCommand而不是SqlConnection對象。你的sql連接對象被保存在這個類中,在connection變量中。

您將需要公開此字段,或者創建一個返回數據連接的函數。

如果進行連接公衆,你會然後做:

SqlCommand myCommand = new SqlCommand("select doc_fname,doc_lname,gender,department,education ,NMC_no from ph.doctor_info where unit_id =0", myConnection.connection); 

編輯:另外在初始化,您已經創建SqlConnection對象,但不叫Open()。在嘗試使用連接之前,您需要執行此操作。在調用SqlCommand之前,可以將connection.Open()添加到initialise()或調用myConnection.connection.Open()

2

DBConnect似乎不公開SqlConnection對象。因此,您將一個DBConnect對象傳遞給SqlCommand構造函數而不是SqlConnection對象,因此出現此錯誤。

相關問題