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)?