我们有一个Firebird数据库用于(非常糟糕的)应用程序和应用程序的前端,但两者之间没有任何内容(即没有源代码)。
数据库中有一个字段存储为-2086008209
,但在前端表示为63997
。
示例:
Database Front-End 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,因此我需要知道如何解码此字段以便从中获取适当的值。它存储为FireBird中的int
(我不知道FireBird是否有签名/无符号整数,但是当我们选择它时会显示为已签名)。
这是该字段的定义:
据我所知,并非正常化。生成器GEN_CONTACTS_ID
对其有66241
,一目了然看起来很准确。
答案 0 :(得分:1)
我的印象是问题出在前端。如果数据库中存储的内容为-2086008209
,则存储在数据库中的内容为-2086008209
。要更好地了解应用程序如何操作数据,请尝试在数据库中存储其他数字,并查看它们的显示方式。
答案 1 :(得分:1)
我正在处理一个以整数形式存储位图的应用程序(只是不要问),如果你以那种形式表达它们,你会发现有用的东西还是一致的
答案 2 :(得分: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,那么这些工具就无济于事。