Вставка 64-разрядного числа без знака в столбец BigInt MySQL с использованием Java и JDBC

Я искал ответ на этот вопрос и нашел только расплывчатые ответы. Вот проблема: у меня есть пример таблицы в MySQL: метка времени времени данных BigInt (20) без знака

Поле данных выбрано так, чтобы оно могло принимать максимальное значение 2 ^ 64: 18446744073709551616 (20 цифр и, следовательно, BigInt (20)).

У меня есть CSV-файл, который содержит 64-разрядные целые числа без знака.

Теперь я использую Java и JDBC для вставки этих данных и сталкиваюсь с проблемами, потому что у Java нет unsigned long. Поэтому я попытался просто передать строку - но это не удалось.

st = conn.prepareStatement("INSERT INTO pawan_table (mytime, data) VALUES(?, ?)");
st.setTimestamp(1, new Timestamp(86400000+i*1000));
st.setString(2, "18446744073709551616");
st.execute();

Я также пробовал класс BigInteger в Java - но в JDBC нет метода, который принимает этот тип. Я могу только конвертировать BigInteger в «long», который подписан, и это не то, что я хочу. Например:

BigInteger bi = new BigInteger(string_from_csv_file);
st.setLong(2, bi.longValue());

Интересно, что MySQL Workbench может вставлять эти данные - но они написаны на c #! и мне нужно написать свой код на Java!

Как Java-программисты вставляют 64-разрядное число без знака в столбец MySQL BigInt (20)?

Ответы на вопрос(3)

Ваш ответ на вопрос