wincc读取mysql数据库_WinCC OA-CTRL-操作MySQL数据库

本文介绍了如何使用WinCC OA的Control脚本通过ODBC连接MySQL数据库,实现数据的读取和写入。首先下载并配置MySQL ODBC驱动,然后编写代码进行数据库连接、读取数据和插入数据的示例,最后展示了操作成功的结果。
摘要由CSDN通过智能技术生成

目的

有的时候我们需要 将WinCC OA里的数据定时的导出,这无可避免的要用到数据库,

今天就来带领大家 使用control脚本通过ODBC 连接mysql 数据库,读取并写入数据.

什么是ODBC?

先套用百度百科:开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,

现已成为WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准ODBC 为异构数据库访问提供统一接口,

允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据;

使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC 可以访问各类计算机上的DB文件,甚至访问如Excel 表和ASCI I数据文件这类非数据库对象。

废话太多了,一张图概括

9d6087104a6674dcffdb7390d1e453d4.png

简而言之 ,就是我在windows 操作系统里要访问数据库(多种数据库)可以通过微软提供的ODBC这个程序,

使用统一的接口与数据库交互,这样就不用考虑数据库多样性的差异,简化了数据库的操作难度及复杂度

连接数据库

OK  知道原理后,来撸点代码

1) 下载MySQL ODBC 驱动并配置

db35646b6871fc201edabe1614d548c9.png

按图示配置ODBC 连接

2) 读取数据库内容

我们在WinCC OA 里新建了一个panel 添加了个按钮,对点击事件进行编辑

main(mapping event)

{intrc;//声明一个dbconnectin类型conn用来管理数据库连接

dbConnection conn;//连接语句 DNS 刚刚起的ODBC实例名字 UID数据库用户名

string conStr = "DSN=WINCCOA;UID=eric;PWD=123456;";//打开 ODBC 连接

rc =dbOpenConnection(conStr,conn);//SQL 查询语句

string queryStr = "SELECT * FROM pump_station";//定义一个查询结果集存放数据类型rs

dbRecordset rs;//执行SQL语句

rc =dbOpenRecordset (conn, queryStr, rs);if (!rc)

{//遍历结果集 打印取出结果

while (!rc && !dbEOF (rs))

{

anytype id,name,addr;

rc= dbGetField (rs, 0, id);

rc= dbGetField (rs, 1, name);

rc= dbGetField (rs, 2, addr);

DebugN(id,name,addr);

rc=dbMoveNext (rs);

}

dbCloseRecordset (rs);

}//关闭数据库

dbCloseConnection(conn);

}

现在运行下 查看结果

6f595098c558412064371a6969adf0a2.png

可以看到查询结果与数据库内容一致

3) 插入语句

同样的套路(建panel增加按钮) 直接上代码

main(mapping event)

{int rc = 0;//声明一个dbconnectin类型conn用来管理数据库连接

dbConnection conn;//连接语句 DNS 刚刚起的ODBC实例名字 UID数据库用户名

string conStr = "DSN=WINCCOA;UID=eric;PWD=123456;";//打开 ODBC 连接

rc =dbOpenConnection(conStr,conn);

dbCommand dbCmd;//配置SQL 语句

string sql = "INSERT INTO pump_station (id,name,addr) VALUES (?,?,?)";

rc=dbStartCommand(conn, sql, dbCmd);//替换SQL 中的?

rc = dbSetParameter(dbCmd, 1, DB_PARAM_IN, 1535);

rc= dbSetParameter(dbCmd, 2, DB_PARAM_IN, "rockwell");

rc= dbSetParameter(dbCmd, 3, DB_PARAM_IN, "shanghai");//执行命令

rc =dbExecuteCommand(dbCmd);//关闭数据库

dbCloseConnection(conn);

}

执行 看数据库结果

422dd40af68fd144baf0feaffd52ee9f.png

OK  操作成功!

后记

结合上一节的定时器 大家可以做些好玩的东西出来

扫码关注 及时获取OA最新消息

e645f6e2907b64ababe2402487ca59f5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值