java - 将整数数组(java)存储到MySQL数据库的好方法是什么

标签 java mysql arrays android-studio

我一直在寻找针对我的问题的各种解决方案,但我找不到针对我的具体情况的明确答案,因此想知道是否有人可以为我提供建议或为我指出正确的方向。

在我的 Android Studio 应用程序中,我有一个二维整数数组(代表颜色网格)。目前网格的最大尺寸是250x250,但我将来可能会增加它。我提前知道网格的大小。

我想将此数组存储在 MySQL 数据库中。我正在想象类似逗号分隔的字符串(例如“1,2,3; 7,8,9”),但后来阅读了有关序列化的内容,并想知道这是否会更好。然而,我读得越多,我就越觉得这对于我正在做的事情来说可能有点矫枉过正。

我永远不需要访问数据库中的单个元素 - 它将始终是一次加载的整个网格。

对于最有效的方法有什么想法吗?

最佳答案

如果您想全面考虑性能和尺寸,我建议使用 BLOB输入您的数据库条目。然后使用 Blob 类的 getBytes 方法检索它,将其包装在 ByteBuffer 中,将其转换为 IntBuffer 并将其读回 int 数组:)。

Blob b = (mysql stuff from JDBC);
byte[] bytes = b.getBytes(0, b.length());
ByteBuffer bbuffer = ByteBuffer.wrap(bytes);
IntBuffer ibuffer = ((ByteBuffer) bbuffer.rewind()).asIntBuffer();
int[] intArray = ibuffer.array();

然后访问:

intArray[y*gridWidth + x]

我会发布更多链接,但声誉不够:(无论如何,如果你用谷歌搜索一下,一切都非常简单。

再说一次,这仅适用于您想要真正高效的情况,而且我相信比我更聪明的人可以发明更疯狂、更快的解决方案。您甚至可以更进一步,存储短整型或字节而不是整数。但请记住,过早的优化是万恶之源。您最好现在选择最简单的解决方案,并且仅在它看起来太慢、需要太多数据等时才更改它。

编辑:刚刚看到我没有解释如何实际存储它,它本质上是相同的过程,但相反。如果您愿意,我可以将其添加到答案中,只需发表评论即可。

关于java - 将整数数组(java)存储到MySQL数据库的好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649672/

相关文章:

javascript 重新填充数组

Java 将 int[] 转换为 byte[] 而不进行转换

java - 字符串在 Java 哈希表中出现的次数

java - 如何使用 Java tfs-sdk 从 tfs 获取变更集信息

java - MVC - 使用哪种设计模式将请求负载从 Controller 转换为模型

mysql - 为什么这个查询会导致锁等待超时?

mysql - 如何管理与数据库的连接?

java - LSH Spark 永远停留在 approxSimilarityJoin() 函数

MySQL 如何更改 innodb-log-file-size

python - 列向量和矩阵之间的区别