2015-01-27 3 views
0

У меня есть список строк подключения базы данных, имя базы данных. Эти базы данных имеют одинаковую структуру таблиц. То, что я пытаюсь сделать, это динамически создавать соединение с каждым из них, добавлять/удалять/изменять таблицу, однако, если ошибка появляется где угодно, то RollbackTrans, else, CommitTrans.Создание динамических соединений ADODB в классическом ASP

Мой основной вопрос, чтобы получить мой на правильном пути заключается в следующем:

Является ли этот код можно в классическом ASP, чтобы сделать Динамически названные соединения?

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

Ошибка я получаю 'Expected end of statement' на .open линии (последняя)

+0

Что DBString) '' функция делает (? Это не встроенная функция. – Lankymart

+0

Только строка подключения будет меняться, и ее строка просто переназначает объекты подключения .ConnectionString подходит и отсоединяется/снова подключается по мере необходимости или передает его функции. Нет необходимости выполнять/оценивать VBScript в строке. –

+0

Какие RDMS вы используете? (MySQL, SQL Server и т. Д.). – Lankymart

ответ

1

Это может сделать трюк: Просто используйте массив строк подключения. Из этого вы создаете массив соединений. Затем вы можете перебирать этот массив и отправлять свои команды в отдельные базы данных.

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 Динамическая строка соединения, образец для т = 1 до 4, четыре различных Conns подключения к базе данных (т)


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'"
Смежные вопросы