2013-09-06 2 views
1

내가 설계중인 응용 프로그램은 네트워크를 통해 MS 또는 Oracle 데이터베이스에 액세스 할 수 있어야하고 데이터베이스 내의 모든 데이터베이스를 읽고 모든 테이블을 나열해야합니다.임의의 SQL 서버에 액세스

결국 사용자는 전체 테이블을 다운로드하여 응용 프로그램에로드 할 수 있어야합니다.

사용자는 일부 매개 변수를 삽입해야합니다 :

  1. IP 주소와 포트
  2. 로그인과 암호를.

그런 다음 그는 데이터베이스를 선택해야하며 테이블을 선택해야합니다.

것은 내가 거의 상자 밖으로 무언가를 찾기 위해 인터넷을 통해 살펴본과 내가 찾은 최고의 결과가 실제로 단정하다 (http://code.google.com/p/dapper-dot-net/)

만날 수있는 더 나은 도서관은 없을까 내 필요?

+3

'DbConnection' /'DbCommand'를 사용할 수없고'System.Data' 네임 스페이스에있는 이유는 무엇입니까? 왜 당신은 ORM이고 당신이 물어 보는 것과 직각으로 'Dapper'를 언급하는지 확신 할 수 없습니다. – Oded

+0

이 모든 것은 적어도 SQL Server 데이터베이스의 경우 SQL Server SMO에서 수행 할 수 있습니다. –

+1

@AnnL., 예 아니오. OP가 Oracle에 연결할 수 있어야하기 때문에 아니오. –

답변

0

나는 마지막으로 DbProviderFactory를 사용하여 행복을 찾아서를 발견했다.

나는 연결 문자열을 만들고 그 연결의 불변 이름 (예 : "System.Data.SqlClient")을 반환하는 속성을 가진 클래스를 만들었습니다.

나는이 불변 이름이 접속 문자열 그런 식으로 사용

this.Factory = DbProviderFactories.GetFactory(connexionStringBuilder.InvariantName); 
this.Connection = Factory.CreateConnection(); 
Connection.ConnectionString = connexionStringBuilder.ConnexionString; 

을 그리고, 내가 과거에 한 모든 ADO.Net 쿼리가 있습니다.

2

귀하의 요구를 충족시킬라이브러리가 없습니다. SSMS와 같은 데이터베이스 탐색 도구를 구축하고 있으므로 Dapper는 동적 인 방식으로 데이터를 가져 오는 수단 일뿐입니다. 그러나 기본 ADO.NET으로 쉽게 수행 할 수 있습니다. DataTable매우 동적 구조이며 필요한 기능을 제공합니다. 사실

, I 사랑 단정하지만, 나는 신발에 있다면 난 그냥 ADO.NET을 사용하는 거라고 주장 때문에 당신이 단지 인터페이스를 사용하여 상호 작용 추상적 인 수 : IDbConnection 예를 들면 IDbCommand을.

+1

나는 당신의 아이디어를 따르고 자신의 라이브러리를 만들 것입니다. –

1

몇 가지 메모 : ADO.NET을 사용하는 것에 동의합니다. 그리고 SqlConnection과 ODP.NET이 공유하는 인터페이스로 돌아갑니다.

몇 가지 아이디어 :

IoC Link

INFORMATION_SCHEMA 

구글이. 이것은 다른 RDBMS의 표준입니다.

내 생각 엔 추상 클래스가 "공통 논리"를 가지고있는 동일한 추상 클래스 (IoC 링크 참조)를 구현하는 2 개의 "Concretes"를 작성할 수 있지만 "안전 값 "2 RDBMS에서 무언가가 똑같이 작동한다면.

그러나 결과가 동적이기 때문에 사전에 테이블/열이 무엇인지 알 수 없으므로 DataTable은 좋지 않습니다.

"동적 데이터"프로젝트와 다른 아이디어가 있습니다. 즉 지금까지 오라클의 구현, 아마는 SQL 서버를 가지고있는 경우

http://msdn.microsoft.com/en-us/library/cc488545%28v=vs.100%29.aspx

하지만 (아마) 모른다.

+0

오라클은 Dynamic Data와 함께 작동합니까? 아마도. http://joegilldotcom.blogspot.com/2010/04/aspnet-dynamic-data-and-oracle.html – granadaCoder

1

직접 이동하기 전에 Microsoft 엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록을 살펴 보시기 바랍니다. ADO.Net을 기반으로하지만, 응용 프로그램이 코드를 작성할 수 있도록 데이터베이스에 무관 한 API를 제공합니다. SQL Server와 Oracle 모두에 대해 사용했습니다.

http://msdn.microsoft.com/en-us/library/dn169621.aspx

+0

주중에이 라이브러리에 대해 약간의 내용을 읽게 될 것입니다. 제안 사항은 –

+0

입니다. EnterpriseLibrary 이제는 더 이상 사용되지 않는 MS Oracle 클라이언트를 사용하여 빌드되었습니다. ODP.NET (오라클의 클라이언트)에 대한 EnterpriseLIbrary.Data 업데이트가 완료되었는지 확인해야합니다. – granadaCoder

+0

http://devstuffs.wordpress.com/2012/03/13/enterprise-library-5-with-odp-net/ – granadaCoder

관련 문제