使用JMP连接数据库,插入记录我最近从客户那里收到了一些关于如何使用 JMP 执行数据库操作的问题。一个问题是您是否可以使用 JMP 连接到数据库。和JMP是的,您可以使用 JMP 脚本语言或打开数据库对话框界面连接到符合 ODBC 的数据库。如果您安装了适当的 ODBC 驱动程序(并且已定义数据源名称或 DSN),则使用文件 -> 数据库 -> 打开数据库命令将连接到数据库并在 JMP 中打开指定的表。这个视频o 展示了如何使用 Microsoft Access 数据库文件配置 ODBC DSN。
在这篇文章的示例中,我使用机器数据源名称连接到 Microsoft Access 数据库并选择了数据库表 tblVehicle。我也可以连接到 ORACLE DBMS、MySQL 数据库甚至 SQL Server 数据库。

如果您不想使用菜单选项,您也可以使用 JSL 来做同样的事情。在这个用于演示目的的示例脚本中,我连接到 Microsoft Access 数据库并返回了标题为“tblVehicle”的表中的所有记录(见上文)。
//连接数据库并选择表
打开数据库(
"DSN=MS Access 数据库;DBQ=C:\Users\stkopr\Documents\MovinOn.accdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;",
"SELECT * FROM tblVehicle",
“tblVehicle”
) ;

另一个问题是我最近从客户那里得到的问题是您是否可以使用 JMP 将记录插入到数据库中。再次,答案是肯定的,你可以。您可以使用 JMP 执行一些分析,然后将分析结果表甚至单个记录插入回数据库。
将单条记录插入数据库表的演示脚本如下所示。
// 连接数据库并插入新记录
打开数据库( "DSN=MS Access 数据库;DBQ=C:\Users\stkopr\Documents\MovinOn.accdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;",
“插入 tblVehicle
(VehicleID , LicensePlateNum, Axle, Color)
值 ('TRK-199', 'JMP 429', 4, '蓝色');" ) ;
使用之前提交的相同 JSL,我可以在 JMP 中显示表格,并选择新插入的记录。

您还可以对记录进行排序、使用 where 子句对数据进行子集化、提交嵌套子查询或删除单个记录——所有这些都可以在 JMP 的舒适范围内完成。
完成所有数据库操作后,请记住关闭数据库连接。同样,这可以使用“打开数据库”对话框窗口中的“断开连接”按钮或使用 JSL 来完成。
有关使用 JMP ODBC 接口的更多信息,请参见“从数据库导入数据”下的帮助文档。
如果您使用此功能插入记录,请告诉我。或者您通常是否将整个表写回数据库?
Guillaume 写道: 嗨,非常感谢您的提示。日志...纪尧姆写道:
你好,
非常感谢您的提示。日志捕获功能是我一直在寻找的功能。
最好的问候,
纪尧姆
Stan Koprowski 写道: 嗨纪尧姆,感谢您的...斯坦·科普罗夫斯基写道:
嗨,纪尧姆,
感谢您的评论,我很高兴示例 JSL 能够帮助您不必执行任何重新计算。
针对您的问题,是的,您可以将数据库返回的错误消息作为字符串捕获到 JSL 变量中。
一种方法是使用日志捕获功能。为了测试 JSL 代码,我模拟了两种不同类型的错误:
在从指定表中选择列之前未建立到 Access 数据库的连接导致的失败错误。
由于未安装适当的 ODBC 驱动程序而导致的失败错误。
我在以下 JSL 代码中包含了一个示例,说明如何完成您想要执行的操作以及由此产生的错误消息:
Names Default To Here( 1 );
AccessError01 = "访问错误:" ||日志捕获(打开数据库(
"DSN=MS Access 数据库;DBQ=C:UsersstkoprDocumentsMovinOn.accdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;",
"SELECT * FROM tblVehicle",
“tblVehicle”
));
以下写入日志,错误字符串存储在场景测试1的变量AccessError01中。
“访问错误:
[Microsoft][ODBC Microsoft Access 驱动程序] 找不到文件“(未知)”。
”
写入日志如下,字符串存储在场景测试2的变量AccessError01中:
“访问错误:
[iODBC][驱动程序管理器]未找到数据源名称且未指定默认驱动程序。无法加载驱动程序
”
再次感谢您的评论。
斯坦
Guillaume 写道: 嗨 Stan,我使用这个 INSERT 语句作为...纪尧姆写道:
嗨,斯坦,
为了按时间段保存统计指标,我使用此 INSERT 语句作为您在帖子中描述的一些 jsl 应用程序。
像这样,我可以稍后请求这些指标(这样可以避免重新计算)。
但我有一个问题。您知道 JMP 是否能够捕获数据库错误并将数据库错误存储在一个 jsl 变量中吗?如果是,我该怎么办?
我在这里更详细地描述了这个问题: https://communities.sas.com/message/167531#167531
谢谢
纪尧姆