2009-03-13 3 views
0

이전 VB6 응용 프로그램을 유지 관리 중이며 SQL 스크립트를 프로젝트의 일부로 직접 포함하고자합니다. VB6 응용 프로그램은이 스크립트의 텍스트를 추출하여 서버에서 실행해야합니다.VB6 응용 프로그램에 SQL 스크립트 포함

이 접근 방식의 이유는 다양합니다. 특히 우리는 전체 업데이트/설치 패키지보다는 업데이트 된 실행 파일 만 제공하려고합니다. 따라서 SQL 스크립트는 리소스 파일과 마찬가지로 응용 프로그램에 컴파일해야합니다. 그리고 분명히 코드에서 내용을 가져 와서 데이터베이스 서버로 보낼 수 있어야합니다.

아무에게도 좋은 방법이 있을까요?

답변

5

가장 간단한 해결책은 스크립트를 문자열로 사용하여 VB 모듈을 만드는 것입니다.

리소스 파일을 대신 사용하려는 경우에도 그렇게 할 수 있습니다. resfile을 VB 프로젝트와 연관시킬 수 있습니다. VB IDE에서는이 작업을 직접 수행하는 방법을 기억하지 않지만 VBP 파일은 ResFile32 parameter을 지원합니다.

EDIT : 대부분의 경우 형식화와 관련하여 문제가되는 것처럼 보입니다. SQL 쿼리를 하나의 긴 문자열로 저장하고 싶지는 않지만 VB에서 쿼리를 멋지게 형식화하는 것은 따옴표를 추가하고 문자열을 추가해야하기 때문에 지루합니다.

SQL을 텍스트 파일에 배치하고 원하는대로 형식을 지정하는 것이 좋습니다. 텍스트를 가져 와서 VB 모듈로 변환하는 스크립트를 작성하십시오. 빌드 프로세스는 응용 프로그램을 컴파일하기 전에 항상이 스크립트를 먼저 적용하도록 수정됩니다.

스크립팅을 위해 자주 사용하는 스크립팅 언어를 사용하십시오. 가장 좋아하는 스크립팅 언어가 없다면 VB, C# 또는 다른 언어로도 작업을 수행 할 수 있습니다. 그것이 나라면 아마 awk (gawk) 나 Python을 사용할 것입니다. 당신은 당신의 SQL을 저장하기 위해 자원 (.RES)를 사용하려면

+0

VB 모듈에서 SQL 문자열을 하드 코딩하면됩니다. 리소스 문자열은 어색 할 것입니다. 동일한 ID에 대해 여러 버전의 문자열 (번역본)이있을 때 리소스 문자열이 좋습니다. 이 경우에는 적용되지 않으므로 모듈의 문자열을 하드 코딩하는 것보다 이점을 사용할 수 있습니다. – MarkJ

+0

ㅎ. 지난 주에 똑같은 문제가있었습니다. 프로그래밍 방식으로 Access 데이터베이스에 추가해야 할 뷰가있었습니다. 같은 솔루션 : DB 업데이트 모듈에 붙여 넣을 수있는 'sql = sql + "blah"문장을 만든 코드 생성기를 작성했습니다. –

2

메뉴로 이동 :

추가 기능 > ... 관리자

을에-추가 VB 6 리소스를 선택 편집자. 시작할 때 추가 및로드되도록 구성하십시오.

편집기 추가 기능에서 VB는 리소스 문자열을 추가하기위한 간단한 인터페이스를 제공합니다. 제공된 상수 값을 사용하여 이들을 참조하십시오. 당신의 접근 방식에

Public Const SQL_INSERT As Integer = 101 
Dim strSQL As String 
strSQL = LoadResString(SQL_INSERT) 

(당신이로드 할 문자열의 상수 값으로 "101"대체)

+0

리소스 스트링은 조금 어색 할 것입니다. 여기서는 전체 스토어드 프로 시저 (일반적으로 수십 줄의 코드)에 대해 이야기하기 때문입니다. 버릇없는 것들을 포맷하는 것은 어색 할 것입니다. 그러나 더 좋은 방법이 없다면 ... –

+0

VB 모듈에서 SQL 문자열을 하드 코딩하면됩니다. 리소스 문자열은 어색 할 것입니다. 동일한 ID에 대해 여러 버전의 문자열 (번역본)이있을 때 리소스 문자열이 좋습니다. 이 경우에는 적용되지 않으므로 모듈의 문자열을 하드 코딩하는 것보다 이점을 사용할 수 있습니다. – MarkJ

+0

동의 ... 이것은 스타일 추천보다는 방법이 많았습니다. –

0

그냥 다른 생각 : 런타임에 문자열을로드하려면 LoadResString 기능을 사용하십시오. 고객을위한 프로그램의 동작 또는 UI를 조정할 때 준비가되지 않았거나 아직 테스트 및 승인되지 않은 변경이있을 수 있습니다. 그래서 내가 때때로 변경되는 속성을 가지고 있지만, ftp 서버에 대한 연결 설정과 같은 제어권을 유지하기를 원한다면, DLL에 리소스 파일을 사용하여 리소스를 제공하는 리소스 만 생성합니다. 값. 내 네트워크 관리자가 ftp 서버에서 무언가를 변경하면 리소스 관리자의 문자열을 변경하고 dll을 다시 컴파일 한 다음 업데이트 된 dll 만 릴리스합니다. 나는 더 많은 해결책이있을 것이라고 확신하지만, 그것이 내가하는 방법이다. exe를 변경하는 동시에 SQL 스크립트를 변경해야한다고 생각하지 않는다면 아마도 작업이 복잡해질 것입니다.그것은 나를 위해 꽤 많이 표준이되었습니다.

관련 문제