def connect( dbname, user, auth, attr )
conn = SA.instance.api.sqlany_new_connection()
conn_str = ''
unless dbname.nil?
if dbname =~ /^[^=:;]+$/
conn_str = "eng=#{dbname};"
elsif dbname =~ /^[^=:;]+:[^=:;]+$/
eng_name, db_name = dbname.split(":")
conn_str = "eng=#{eng_name};dbn=#{db_name};"
else
conn_str = dbname;
conn_str << ';' unless conn_str.length == 0 or conn_str[conn_str.length - 1, 1] == ';'
end
end
unless user.nil?
raise DBI::ProgrammingError.new("UID is specified twice. Once in the connection string AND once as a connect() parameter. It can only be specified once.") if conn_str =~ /uid=/i
conn_str << "uid=#{user};"
end
unless auth.nil?
raise DBI::ProgrammingError.new("PWD is specified twice. Once in the connection string AND once as a connect() parameter. It can only be specifed once.") if conn_str =~ /pwd=/i
conn_str << "pwd=#{auth};"
end
SA.instance.api.sqlany_connect(conn, conn_str)
return Database.new(conn, attr)
end