Function: sql-connect

sql-connect is an autoloaded, interactive and byte-compiled function defined in sql.el.gz.

Signature

(sql-connect CONNECTION &optional BUF-NAME)

Documentation

Connect to an interactive session using CONNECTION settings.

See sql-connection-alist to see how to define connections and their settings.

The user will not be prompted for any login parameters if a value is specified in the connection settings.

Probably introduced at or before Emacs version 24.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/sql.el.gz
;;;###autoload
(defun sql-connect (connection &optional buf-name)
  "Connect to an interactive session using CONNECTION settings.

See `sql-connection-alist' to see how to define connections and
their settings.

The user will not be prompted for any login parameters if a value
is specified in the connection settings."

  ;; Prompt for the connection from those defined in the alist
  (interactive
   (if sql-connection-alist
       (list (sql-read-connection "Connection: ")
             current-prefix-arg)
     (user-error "No SQL Connections defined")))

  ;; Are there connections defined
  (if sql-connection-alist
      ;; Was one selected
      (when connection
        ;; Get connection settings
        (let ((connect-set (cdr (assoc-string connection sql-connection-alist t))))
          ;; Settings are defined
          (if connect-set
              ;; Set the desired parameters
              (let (param-var login-params set-vars rem-vars)
                ;; Set the parameters and start the interactive session
                (dolist (vv connect-set)
                  (let ((var (car vv))
                        (val (cadr vv)))
                    (set-default var (eval val)))) ;FIXME: Why `eval'?
                (setq-default sql-connection connection)

                ;; :sqli-login params variable
                (setq param-var
                      (sql-get-product-feature sql-product :sqli-login nil t))

                ;; :sqli-login params value
                (setq login-params (symbol-value param-var))

                ;; Params set in the connection
                (setq set-vars
                      (mapcar
                       (lambda (v)
                         (pcase (car v)
                           ('sql-user     'user)
                           ('sql-password 'password)
                           ('sql-server   'server)
                           ('sql-database 'database)
                           ('sql-port     'port)
                           (s             s)))
                       connect-set))

                ;; the remaining params (w/o the connection params)
                (setq rem-vars
                      (sql-for-each-login login-params
                                          (lambda (var vals)
                                            (unless (member var set-vars)
                                              (if vals (cons var vals) var)))))

                ;; Start the SQLi session with revised list of login parameters
                (cl-progv (list param-var) (list rem-vars)
                  (sql-product-interactive
                   sql-product
                   (or buf-name (format "<%s>" connection)))))

            (user-error "SQL Connection <%s> does not exist" connection)
            nil)))

    (user-error "No SQL Connections defined")
    nil))