public void insert() throws ESellException 
	{
		makeConnection();
		PreparedStatement preparedStatement = null;
		ResultSet res;

		if (conn != null) {
			try {

				// Statement vorbereiten
				String sql = "INSERT INTO petitions (`user_id`,`title`,`description`,`price`,`category_id`,`amount`,`image_url`,`state`,`created`) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";

				preparedStatement = conn.prepareStatement(sql,
						Statement.RETURN_GENERATED_KEYS);

				preparedStatement.setInt(1, getUserID());
				preparedStatement.setString(2, getTitle());

				if (description != null)
					preparedStatement.setString(3, getDescription());
				else
					preparedStatement.setNull(3, Types.VARCHAR);

				if (price != null)
					preparedStatement.setInt(4, getPrice());
				else
					preparedStatement.setNull(4, Types.INTEGER);

				preparedStatement.setInt(5, getCategoryID());
				preparedStatement.setInt(6, getAmount());

				if (imageURL != null)
					preparedStatement.setString(7, getImageURL().toString());
				else
					preparedStatement.setNull(7, Types.VARCHAR);

				preparedStatement.setString(8, getState());
				preparedStatement.setDate(9, getCreation());
				// System.out.println(preparedStatement);
				// Statement absetzen
				preparedStatement.execute();

				// InsertID ermitteln
				// Die Methode ist effizienter als nochmal eine Abfrage
				// auszufhren :)
				res = preparedStatement.getGeneratedKeys();
				if (res.next()) {
					this.id = res.getInt(1);
					return;
				} else {
					throw new ESellException(ESellException.ErrorCode.INSERT_ERR);
				}

			} catch (SQLException e) {
				// ToDo
				e.printStackTrace();
				throw new ESellException(ESellException.ErrorCode.DB_ERR);
			}
		}
		else	
			throw new ESellException(ESellException.ErrorCode.DB_ERR);
	}