2015-01-27 1 views
0

데이터베이스 연결 문자열, 데이터베이스 이름 목록이 있습니다. 이러한 데이터베이스는 동일한 테이블 구조를가집니다. 내가 뭘 하려는지 동적으로 각 하나의 테이블에 추가/삭제/수정, 그러나, 어디서나 오류가 팝업, 다음 RollbackTrans, 다른, CommitTrans에 대한 연결을 만들 수 있습니다.클래식 ASP에서 동적 ADODB 연결 만들기

내 기본적인 질문은 올바른 경로에 내 얻을 :

이 코드는 클래식 ASP는 동적라는 이름의 연결을하여 수 있습니까?

'create the dynamic object 
execute("Set Con" & index & " = Server.CreateObject(""ADODB.connection"")") 
'connect to the dynamic object 
execute("Con" & index & ".Open " & DBString(index)) 

내가 오류가 .open 라인 (마지막)

+0

하고있는'DBString() '함수가 무엇인가에 대한 샘플? 그것은 내장 된 기능이 아닙니다. – Lankymart

+0

연결 문자열 만 다를 수 있으며 문자열은 연결 개체의 .ConnectionString 속성을 재 할당하고 필요에 따라 연결을 끊거나 다시 연결하거나 함수에 제공합니다. 문자열에서 VBScript를 실행/평가할 필요가 없습니다. –

+0

어떤 RDMS를 사용하고 있습니까? (MySQL은, SQL 서버 등). – Lankymart

답변

1

이 트릭을 할 수도 있습니다에 'Expected end of statement'입니다 : 그냥 연결 문자열의 배열을 사용합니다. 여기에서 연결 배열을 만듭니다. 그런 다음이 배열을 반복하고 별도의 데이터베이스에 명령을 보낼 수 있습니다.

dim connectionStrings(1) 
    dim connections(1) 
    dim curConn 

    connectionStrings(0) = "Provider=sqloledb;Server=.\EXPRESS2012;Database=master;uid=youruser;pwd=yourpwd" 
    connectionStrings(1) = "Provider=sqloledb;Server=.\EXPRESS2012;Database=model;uid=youruser;pwd=yourpwd" 

    for curConn = 0 to ubound(connectionStrings) 
    set connections(curConn) = Server.CreateObject("ADODB.Connection") 
    connections(curConn).Open connectionStrings(curConn) 
    next 

    dim cmd : cmd = "select @@servername, db_name()" 
    for curConn = 0 to ubound(connectionStrings) 
    dim rs 
    set rs = connections(curConn).Execute(cmd) 
    Response.write(rs(0) & ":" & rs(1) & "<br />") 
    rs.close 
    set rs = nothing 
    next 


    for curConn = 0 to ubound(connectionStrings) 
    call connections(curConn).Close 
    set connections(curConn) = nothing 
    next 
+0

고맙습니다. 나는 모든 것을 배열에 버리는 것을 생각조차하지 않았다. 아주 좋아. – EglCode

+0

@EglCode 왜 그렇게 좋습니까? 여러 개의 연결로 인해 오버 헤드가 발생합니다. 연결 문자열에서 데이터베이스를 전환 할 필요가없는 하나의 연결에서 모든 작업을 수행 할 수 있습니다. 그러나 당신이 질문에 대답하지 않으므로 당신을 도우려고 무의미합니다. – Lankymart

+0

@ Lankymart, 죄송합니다. 내 응답 시간이 예상에 맞지 않았고, 일주일 동안 휴가를갔습니다. 연결을 닫으면 트랜잭션을 취소하거나 취소 할 수 없습니다. 마지막 연결에서 오류가 발생합니다. 다른 데이터베이스의 모든 변경 사항을 취소 할 수 있습니다. – EglCode

0

MySQL의 동적 연결 문자열, t = 1 ~ 4, 네 가지 데이터베이스 연결 conns (t)


dim conns(4) 

Set Conns(1)=Server.Createobject("ADODB.Connection") 

Conns(1).Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost;port=3306;DATABASE=dbname;UID=root;PASSWORD=pass;OPTION=3" 
Conns(1).Execute "SET NAMES 'latin5'" 
Conns(1).Execute "SET CHARACTER SET latin5" 
Conns(1).Execute "SET COLLATION_CONNECTION = 'latin5_turkish_ci'"