Skip to content

SQLite 数据读取示例 ​

下面以默认数据库:

EsBrowser\Machine\MySQLite.db

为例。

客户可以使用 DB Browser for SQLite、C#、Python 或其他支持 SQLite 的程序直接执行 SQL 查询。

示例 1:读取最近的测量记录 ​

sql
SELECT
    num,
    元素名称,
    类型,
    add_time,
    工件名称,
    物料号,
    批号,
    产品SN,
    公差状态
FROM 测量主表
ORDER BY num DESC
LIMIT 20;

可以用于读取最近完成的 20 个测量元素。

例如可能得到:

1003 角度1 角度 2026-09-24 10:25:321002 距离1 距离 2026-09-24 10:25:301001 圆1 圆 2026-09-24 10:25:28

数据库中的 num 会随新记录递增,因此也可以用于增量读取。

示例 2:读取某个元素的详细测量结果 ​

假设需要读取主表编号:

1001

对应的详细测量数据:

sql
SELECT
    属性,
    测量值,
    标准值,
    上公差,
    下公差,
    误差,
    判定
FROM 测量从表
WHERE 主表num = 1001;

如果 1001 是圆1,结果可能类似:

属性 测量值 标准值 上公差 下公差 误差 判定直径 10.002 10.000 0.010 -0.010 0.002 OK圆心 X 25.123圆心 Y 18.456

一个圆元素通常会对应多个测量属性,这些属性分别存放在测量从表中。

示例 3:一次读取主表和测量结果 ​

也可以直接将主表和从表关联起来:

sql
SELECT
    M.num,
    M.元素名称,
    M.类型,
    M.add_time,
    D.属性,
    D.测量值,
    D.标准值,
    D.上公差,
    D.下公差,
    D.误差,
    D.判定
FROM 测量主表 AS M
LEFT JOIN 测量从表 AS D
    ON D.主表num = M.num
ORDER BY M.num DESC;

这样第三方系统可以一次获得:

这个元素是谁 + 测量了什么 + 测量结果是多少

例如:

1001 圆1 圆 直径 10.0021001 圆1 圆 圆心 X 25.1231001 圆1 圆 圆心 Y 18.4561002 距离1 距离 距离 15.0041003 角度1 角度 角度 89.998

示例 4:按产品 SN 查询 ​

如果客户使用产品序列号管理工件,可以按照:

产品SN

查询:

sql
SELECT
    num,
    元素名称,
    类型,
    add_time,
    产品SN
FROM 测量主表
WHERE 产品SN = 'SN202609240001'
ORDER BY num;

然后再根据返回的 num 查询对应的测量从表。

数据库主表实际保存物料号、批号和产品 SN 等产品信息。

示例 5:按批号查询所有测量结果 ​

sql
SELECT
    M.批号,
    M.产品SN,
    M.元素名称,
    D.属性,
    D.测量值,
    D.判定,
    M.add_time
FROM 测量主表 AS M
JOIN 测量从表 AS D
    ON D.主表num = M.num
WHERE M.批号 = 'BATCH-001'
ORDER BY M.add_time;

这种方式比较适合 MES 或 QMS 查询某一个生产批次的全部测量数据。

示例 6:增量读取新数据 ​

如果客户自己的系统需要持续读取 Easson2D 新产生的数据,可以记录上一次已经读取到的最大 num。

例如上一次已经读取到:

num = 1000

下一次只需要查询:

sql
SELECT *
FROM 测量主表
WHERE num > 1000
ORDER BY num;

读取完成后,再记录新的最大 num。

这样不需要每次扫描整个数据库。

num 是主表自增编号,可以作为本地数据库的增量读取游标使用;如果数据库被重新建立,则编号会重新开始,因此长期跨库识别时还可以结合记录标识 GUID。

示例 7:读取图片信息 ​

如果已经开启测量图片保存,可以查询:

sql
SELECT
    主表num,
    结果图,
    编号,
    x轴,
    y轴,
    z轴,
    放大倍率
FROM 测量附表
WHERE 主表num = 1001;

数据库不会直接保存图片内容,而是保存图片文件信息。

实际 JPEG 图片保存在:

*2D_Data\EsBasic\年份\月份*

目录下。

一个更完整的客户对接例子 ​

假设客户需要读取:

SN202609240001

这个工件的所有测量结果,可以先执行:

sql
SELECT
    M.num,
    M.元素名称,
    M.类型,
    D.属性,
    D.MeasuredValue,
    D.标准值,
    D.上公差,
    D.下公差,
    D.误差,
    D.判定
FROM 测量主表 AS M
JOIN 测量从表 AS D
    ON D.主表num = M.num
WHERE M.产品SN = 'SN202609240001'
ORDER BY M.num;

即可得到类似:

圆1直径 10.002圆心 X 25.123圆心 Y 18.456

距离1距离 15.004

角度1角度 89.998

这里建议第三方系统如果需要进行进一步数值计算,优先考虑数据库里的 MeasuredValue 数值字段,而不是只依赖界面格式化后的"测量值"字符串;源码中确实额外保存了 MeasuredValue、AttributeId、LengthScale、IsAngle 这些辅助字段。