问题
Due to mathematica constraints I've to use the BigInteger class to represent values.
After some calculations I would like to store the result (given by 2x BigInteger instances) into Mysql...
What is the best datatype to store such object ?
I was thinking about using a Blob to store the binary format of those results (128 bits) ? But I would like to avoid unnecessary type conversions.
回答1:
I would recommend using a Blob and then the BigInteger(byte[] val)
constructor to go from byte array to BigInteger, and the BigInteger#toByteArray()
method for the other way.
回答2:
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
Reference
回答3:
In order to store bigInteger
values in MySQL, we can store as strings:
Convert
biginteger
tostring
:String s=bigint_value.toString();
Store
s
in table field which is of typetext
; e.g. if we stores
in a table namedbig_values
having fieldbig_value_as_string
:CREATE TABLE big_values (big_value_as_string text);
The value is now stored.
To retrieve we must:
Retrieve string value from table:
String bg = rs.getString("big_value_as_string");
Convert the string to
bigInteger
type:BigInteger b = new BigInteger(bg);
回答4:
MySQL has a BIGINT data type as shown in: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
You can try to use the BIGINT for that rather then doing conversion to binary formats which makes it whole lot more complex to my opinion.
来源:https://stackoverflow.com/questions/4374930/store-biginteger-into-mysql