code: func GenADODB(u *URL) (string, error) {
  	// grab data source
  	host, port := hostname(u.Host), hostport(u.Host)
  	dsname, dbname := strings.TrimPrefix(u.Path, "/"), ""
  	if dsname == "" {
  		dsname = "."
  	}
  
  	// check if data source is not a path on disk
  	if mode(dsname) == 0 {
  		if i := strings.IndexAny(dsname, `\/`); i != -1 {
  			dbname = dsname[i+1:]
  			dsname = dsname[:i]
  		}
  	}
  
  	q := u.Query()
  	q.Set("Provider", host)
  	q.Set("Port", port)
  	q.Set("Data Source", dsname)
  	q.Set("Database", dbname)
  
  	// add user/pass
  	if u.User != nil {
  		q.Set("User ID", u.User.Username())
  		pass, _ := u.User.Password()
  		q.Set("Password", pass)
  	}
  
  	// save host, port, dbname
  	if u.hostPortDB == nil {
  		n := dsname
  		if dbname != "" {
  			n += "/" + dbname
  		}
  		u.hostPortDB = []string{host, port, n}
  	}
  
  	return genOptionsODBC(q, true), nil
  }
docs: // GenADODB generates a adodb DSN from the passed URL.