2017-04-07 1 views
0

MySQL 연결을 사용하는 VB.Net 프로그램이 있습니다.
코드를 더 깔끔하고 재사용 할 수있게하기 위해 모든 기능을 갖춘 DBManager 클래스를 만들었습니다.
별도의 프로젝트에서이 클래스를 만들었고 가까운 미래에이 클래스에서 독립 실행 형 DLL을 얻을 계획입니다.
그래서 지금 내 주요 프로그램은 단순히 가져 오기 DBManager

DBManager의 함수 중 하나는 MySqlCommand 유형의 인수가 필요합니다.

당연히 DBManager 위에 MySql.Data.MySqlClient을 가져 왔습니다. 그러나 지금은 주 프로그램에서 MySqlCommand 유형 (또는 그보다 더 나은 클래스)에 액세스 할 수 없습니다.

MySqlCommand을 얻을 수있는 청소기 방법이 있나요 ....

가능한 해결 방법은 내 메인 프로그램에 MySql.Data.MySqlClient을 가져 오는 것입니다,하지만 난 그냥 인수로 MySqlCommand을 사용하는 전체 MySQL의 네임 스페이스를 가져 오기 때문에 그 깨끗한 해결책이 아니라 생각 클래스밖으로 가져 오지 않고 MySql.Data.MySqlClient 주 프로그램에서?Access 클래스 '가져온 클래스

+0

해결 방법은 아닙니다. 필요한 솔루션입니다. 해당 메소드가 해당 유형의 매개 변수를 필요로하면 응용 프로그램은 해당 유형이 존재한다는 것을 알아야하며이를 수행 할 수있는 유일한 방법은 해당 유형이 선언 된 라이브러리를 참조하는 것입니다. 그 주위에 방법이 없습니다. 'MySqlCommand'를 기대하는 대신, SQL 코드를 포함하는'String'과 매개 변수 값의'Dictionary'를 기대하고 그 내부적으로 명령 객체를 생성하기 위해 그 메소드를 작성 하시겠습니까? 소비 애플 리케이션이'MySqlClient'에 대해 알 필요가 없다면 그 네임 스페이스의 어떤 타입도 노출시키지 마십시오. – jmcilhinney

+0

안녕하세요, 당신은 jmcilhinney를 Thaks, AddWithValue 메서드를 사용하려면 MySqlCommand 형식을 사용했습니다. MySqlCommand가 MySqlCommand 대신에이 사용자 정의 클래스를 사용하기 위해 수행하는 작업을 정확히 복사하는 클래스를 작성할 수 있는지 궁금합니다. 그렇지 않으면 문자열을 사용하려고 시도합니다. –

+0

메소드 내에서'AddWithValue'를 사용하십시오. – jmcilhinney

답변

0

좋아, 나는 jmcilhinney의 제안에 기반한 해결책을 발견했다.
매개 변수를 삽입하는 데 필요한 add 메서드를 지원하는 두 개의 공용 변수 Public CommandText As StringPublic Parameters As SortedList(Of String, String)을 사용하여 클래스 DBSqlCommand을 만들었습니다.
다음 메소드의 인수 유형을 DBSqlCommand으로 변경했습니다.
이제 내 메서드를 호출하면 내부적으로 MySqlCommand를 처리하고 목록을 명령 매개 변수로 변환합니다.

관련 문제