由于mathematica约束,我将使用BigInteger类来表示值。
经过一些计算后,我想将结果(由2x BigInteger实例给出)存储到Mysql中......
存储此类对象的最佳数据类型是什么?
我在考虑使用Blob存储这些结果的二进制格式(128位)?但我想避免不必要的类型转换。
答案 0 :(得分:7)
我建议使用Blob然后使用BigInteger(byte[] val)
构造函数从字节数组转到BigInteger,并使用BigInteger#toByteArray()
方法用于其他方式。
答案 1 :(得分:5)
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
答案 2 :(得分:1)
为了在MySQL中存储bigInteger
值,我们可以存储为字符串:
将biginteger
转换为string
:
String s=bigint_value.toString();
将s
存储在text
类型的表字段中;例如如果我们将s
存储在名为big_values
且具有字段big_value_as_string
:
CREATE TABLE big_values (big_value_as_string text);
现在存储该值。
要检索我们必须:
从表中检索字符串值:
String bg = rs.getString("big_value_as_string");
将字符串转换为bigInteger
类型:
BigInteger b = new BigInteger(bg);
答案 3 :(得分:-1)
MySQL有一个BIGINT数据类型,如:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
您可以尝试使用BIGINT而不是转换为二进制格式,这使我的意见变得更加复杂。