Магазин BigInteger в Mysql - PullRequest
       11

Магазин BigInteger в Mysql

4 голосов
/ 07 декабря 2010

Из-за ограничений mathematica я должен использовать класс BigInteger для представления значений.

После некоторых вычислений я хотел бы сохранить результат (заданный 2х экземплярами BigInteger) в Mysql ...

Каков наилучший тип данных для хранения такого объекта?

Я думал об использовании BLOB-объекта для хранения двоичного формата этих результатов (128 бит)?Но я бы хотел избежать ненужных преобразований типов.

Ответы [ 4 ]

7 голосов
/ 07 декабря 2010

Я бы рекомендовал использовать Blob, а затем конструктор BigInteger(byte[] val) для перехода от байтового массива к BigInteger и метод BigInteger#toByteArray() для другого пути.

5 голосов
/ 11 января 2013
MySQL Type      Java Type
----------------------------------------
CHAR            String
VARCHAR         String
LONGVARCHAR     String
NUMERIC         java.math.BigDecimal
DECIMAL         java.math.BigDecimal
BIT             boolean
TINYINT         byte
SMALLINT        short
INTEGER         int
BIGINT          long
REAL            float
FLOAT           double
DOUBLE          double
BINARY          byte []
VARBINARY       byte []
LONGVARBINARY   byte []
DATE            java.sql.Date
TIME            java.sql.Time
TIMESTAMP       java.sql.Tiimestamp

Ссылка

1 голос
/ 12 января 2017

Чтобы хранить bigInteger значения в MySQL, мы можем хранить в виде строк:

  1. Преобразование biginteger в string:

    String s=bigint_value.toString();
    
  2. Сохранить s в поле таблицы типа text; например если мы храним s в таблице с именем big_values, имеющей поле big_value_as_string:

    CREATE TABLE big_values (big_value_as_string text);
    

    Значение теперь сохраняется.

Для извлечения мы должны:

  1. Получить строковое значение из таблицы:

    String bg = rs.getString("big_value_as_string");
    
  2. Преобразовать строку в bigInteger тип:

    BigInteger b = new BigInteger(bg);
    
0 голосов
/ 07 декабря 2010

MySQL имеет тип данных BIGINT, как показано в: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Вы можете попытаться использовать BIGINT для этого, а не делать преобразование в двоичные форматы, что, на мой взгляд, делает его намного более сложным.

...