4

我们有一个用于(非常糟糕的)应用程序的 Firebird 数据库和应用程序的前端,但两者之间没有(即没有源代码)。

数据库中有一个字段存储为,-2086008209但在前端表示为63997

例子:

数据库前端
 758038959 44093
1532056691 61409
  28401112 65866
-712038758 40712
 936488434 43872
-688079579 48567
1796491935 39437
1178382500 30006
1419373703 66069
1996421588 48454
 890825339 46313
-820234748 45206

这是一个什么样的存储?我们这里的目的是访问应用程序的后端数据并完全绕过前端 GUI,因此我需要知道如何解码此字段以便从中获取适当的值。它以 a 形式存储int在 FireBird 中(我不知道 FireBird 是否有签名/无符号整数,但是当我们选择它时显示为已签名)。


这是字段的定义:

在此处输入图像描述

据我所知,它没有被去规范化。生成器GEN_CONTACTS_ID反对66241它,乍一看看起来很准确。

4

3 回答 3

1

我正在使用一个以整数形式存储位图的应用程序(只是不要问),如果您以这种形式表达它们,您是否有用或一致

于 2013-09-06T15:20:06.273 回答
1

我的印象是问题出在前端。如果存储在 DB 中的是-2086008209,那么存储在 DB 中的是-2086008209。要更好地了解应用程序如何处理数据,请尝试将其他数字存储在数据库中并查看它们的显示方式。

于 2013-09-03T05:45:22.083 回答
0

您是通过记录 SQL 来实现这一点的吗?如果您还没有,您可以通过使用 Firebird Trace API 来获取该 SQL:http ://www.firebirdfaq.org/faq95/ 为自己服务。解析 Trace API 的一个更简单的工具是这个商业产品:http ://www.upscene.com/products.fbtm.index.php 。

我已经使用这些工具和其他技术(触发器等)来查找应用程序在数据库中使用/更改的内容。

当然,如果 SQL 语句是 select * from table,那么这些工具也无济于事。

于 2013-09-11T03:22:04.047 回答