2011-01-26 8 views
0

내 앱 아키텍처에서 한 URL은 하나의 회사 데이터 소스를 가리 킵니다. 따라서 동일한 데이터베이스에 여러 회사가 있다는 문제를 해결하기 위해 JDBC URL에 추가 매개 변수를 추가 할 수있는 가능성을 탐구하고 싶습니다.JDBC URL 속성은 어떻게 작동합니까?

기본적으로 내가하고 싶은 일은 다음 URL로 연결하는 것입니다.

jdbc : sqlserver : //192.168.128.2 : 1433; databaseName = businessesDB; 회사 ID = 25

내가 연결이 JDBC URL에 그 정의 PARAM를 추가하여 영향을받지 않는 것을 테스트가 있습니다. 하지만 내 질문은 내 앱에서 companyId 속성에 액세스하는 방법입니다.

데이터 소스에서 가져온 Connection 객체를 사용하여 해당 속성의 값을 검색 할 수 있습니까?

답변

0

Microsoft SQL Server 드라이버를 사용하고있는 것 같습니다. http://msdn.microsoft.com/en-us/library/ms378988.aspx을보고 applicationName 속성을 사용하여 연결을 사용하는 업체를 식별 할 수 있어야합니다. 이 방법을 사용하면 SQL Server 프로파일 링 및 로깅 도구에서 연결의 비즈니스를 식별 할 수 있다는 이점이 있습니다.

프로그래밍 방식으로 applicationName을 얻거나 비즈니스에 해당하는 경우 java.sql.Driver.getPropertyInfo (url, properties)를 사용할 수 있습니다.

+0

java.sql.Driver도 com.microsoft.sqlserver.jdbc.SQLServerDriver는 getPropertyInfo 방법이 있습니다 정규식을 사용하여

내가 PARAM과 같이 얻을 URL에 적용. applicationName 속성을 설정하는 것은 좋은 습관이지만, Im을 사용하기위한 것이 아니며 아마도 질문을 다시 작성해야합니다. – JorgeO

+0

다음은 getPropertyInfo 메소드에 대한 Microsoft 설명서입니다. 희망이 도움이됩니다. http://msdn.microsoft.com/en-us/library/ms378773.aspx –

0

내가 어떻게 해결하는지 게시 할 예정입니다. 그러나 MySQL 데이터베이스 JDBC URL은 http URL과 같은 매개 변수를 분리하고 SQL Server JDBC 드라이버는 속성을 데이터베이스와 분리 할 것으로 예상하기 때문에 실제 데이터베이스와 상관없이보다 효과적인 솔루션이 있어야한다고 생각합니다. 캐릭터. 결국 JDBC가 전혀 존재하지 않는 이유가 있습니다.

 String url = company.getJdbcUrl(); 

     Pattern p = Pattern.compile("companyId=(\\d+)"); 
     Matcher m = p.matcher(url); 

     if (m.find()) { 
      companyId = m.group(1); 
      _logger.info("companyId found"); 
     } else { 
      _logger.error("could not get companyId"); 
     } 
+0

왜 비즈니스 관련 구성 속성을 JDBC URL에 집어 넣으시겠습니까? 왜 company.getBusinessName()을하지 않습니까? 각 회사는 JDBC URL과 상호로 구성 될 수 있습니다. –

관련 문제