2012-03-16 3 views
0

응용 프로그램이 시작될 때 데이터베이스에 액세스하려면 Dll을 사용하는 것이 현명합니까? 데이터베이스에 액세스하기위한 DLL 만들기 C#

내가 내 응용 프로그램

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

에서 모든 페이지에 전화를해야 코드와 내가

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;을 추가하고이를 실행하려고 쓴 DLL 코드 코드

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

+1

"작동하지 않을 것입니다"는별로 도움이되지 않습니다. 무슨 일이 일어나고 무슨 일이 일어날 것으로 예상 했습니까? 오류 메시지가 나타 납니까? – Heinzi

+0

@Jason Typo가 업데이트되었습니다. – deception1

답변

1

"DbConnect"형식의 개체를 SqlConnection 개체가 아닌 SqlCommand에 전달하고 있습니다. 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()라고하지 않았습니다. 연결을 사용하기 전에이 작업을 수행해야합니다. connection.Open()을 initialise()에 추가하거나 SqlCommand를 호출하기 전에 myConnection.connection.Open()을 호출하십시오.

2

DBConnect가 SqlConnection 개체를 노출하지 않는 것 같습니다. 따라서 DBConnect 개체를 SqlConnection 개체가 아닌 SqlCommand 생성자로 전달하므로 오류가 발생합니다.

관련 문제