<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ActionDatabase(self, cmd, args = None, commit = True, error = True):
 """ Do action on database. Parameters cmd : string SQL command. args : tuple [optional : default = None] Arguments to be passed along with the SQL command. e.g. cmd="SELECT Value FROM Config WHERE Name=?" args=(fieldName, ) commit : boolean [optional : default = True] If true commit database changes after command is executed. error : boolean [optional : default = True] If False then any sqlite3.OperationalError exceptions will cause this function to return None, otherwise the exception will be raised. Returns If a valid result is obtained from the database this will be returned. If an error occurs and the error argument is set to False then the return value will be None. """

    goodlogging.Log.Info("DB", "Database Command: {0} {1}".format(cmd, args), verbosity=self.logVerbosity)
    with sqlite3.connect(self._dbPath) as db:
      try:
        if args is None:
          result = db.execute(cmd)
        else:
          result = db.execute(cmd, args)
      except sqlite3.OperationalError:
        if error is True:
          raise
        return None
      else:
        if commit is True:
          db.commit()
        return result.fetchall()