Inserindo números de 64 bits não assinados na coluna BigInt MySQL usando Java e JDBC

Eu procurei por respostas para essa pergunta e só encontrei respostas vagas. Aqui está o problema: Eu tenho uma tabela de exemplo no MySQL: mytable time Timestamp data BigInt (20) unsigned

O campo de dados é escolhido de modo que possa receber o valor máximo de 2 ^ 64: 18446744073709551616 (20 dígitos e, portanto, BigInt (20)).

Eu tenho um arquivo csv que contém inteiros de 64 bits não assinados.

Agora estou usando o Java e o JDBC para inserir esses dados e executar problemas porque o Java não tem longos não assinados. Então eu tentei apenas passar string - mas isso falha.

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

Eu também tentei a classe BigInteger em Java - mas o JDBC não tem um método que use esse tipo. Eu só posso converter BigInteger para "longo", que é assinado e que não é o que eu quero. Por exemplo:

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

O interessante é que o MySQL Workbench pode inserir esses dados - mas está escrito em c #! e eu preciso escrever meu código em Java!

Como os programadores Java inserem números de 64 bits não assinados na coluna MySQL BigInt (20)?

questionAnswers(3)

yourAnswerToTheQuestion