Моим первым предположением было бы то, что Integer.parseInt (num) может выдать исключение. Если это так, оператор SQL будет нарушен.
во-вторых, как указал Макач, есть несколько вопросов. первый всеобъемлющий
вы не должны использовать конкатенацию строк, как
....where msg_id = " + topicId;
а точнее
....where msg_id = ?"
stmt.set Int(1,topicId)
edit: кажется, это то, что вы пытались в любом случае, ТАК затягивает некоторых персонажей.