code: def jdbc(self, url, table, mode=None, properties=None):
          
          if properties is None:
              properties = dict()
          jprop = JavaClass("java.util.Properties", self._spark._sc._gateway._gateway_client)()
          for k in properties:
              jprop.setProperty(k, properties[k])
          self.mode(mode)._jwrite.jdbc(url, table, jprop)
docs: Saves the content of the :class:`DataFrame` to an external database table via JDBC.
  
          .. note:: Don't create too many partitions in parallel on a large cluster;
              otherwise Spark might crash your external database systems.
  
          :param url: a JDBC URL of the form ``jdbc:subprotocol:subname``
          :param table: Name of the table in the external database.
          :param mode: specifies the behavior of the save operation when data already exists.
  
              * ``append``: Append contents of this :class:`DataFrame` to existing data.
              * ``overwrite``: Overwrite existing data.
              * ``ignore``: Silently ignore this operation if data already exists.
              * ``error`` or ``errorifexists`` (default case): Throw an exception if data already \
                  exists.
          :param properties: a dictionary of JDBC database connection arguments. Normally at
                             least properties "user" and "password" with their corresponding values.
                             For example { 'user' : 'SYSTEM', 'password' : 'mypassword' }