组态王写入MySQL数据库

涉及部分概念,如下:

记录体

记录体用来连接表格的列和组态王数据词典中的变量。选择工程浏览器左侧大纲项“SQL访问管理器文件\记录体”,在工程浏览器右侧用鼠标左键双击“新建”图标,弹出对话框如下图所示。该对话框用于建立新的记录体。


image.png

记录体名:记录体的名称,长度不超过32个字符;

字段名称:数据库表格中的列名,长度不超过32个字符;

变量:与数据库表格中指定列相关联的组态王变量名称。点击右边“?”按钮,弹出“选择变量名”窗口,可以从中选择变量;

增加字段:在上面定义完字段名称和组态王变量后,点击“增加字段”按钮,将会把定义好的字段增加到显示框中;

删除字段:从显示框中选中已有字段的字段名称,点击“删除字段”按钮,将会把定义好的字段从显示框中删除;

修改字段:从显示框中选中已有字段的字段名称,此时该字段名称和对应组态王变量名称会显示在各项中,对各项进行修改,然后点击“修改字段”按钮,将会把修改后的字段重新显示在显示框中,修改完字段后,必须点击“确认”按钮才会保存修改内容;

上移一行:从显示框中选中已有字段的字段名称,点击“上移一行”按钮,将会把选中的字段向上移动一行;

下移一行:从显示框中选中已有字段的字段名称,点击“下移一行”按钮,将会把选中的字段向下移动一行。

复制记录体:选中已定义的记录体,点右键,从弹出的右键菜单中选择“复制编辑”,最后点“确认”,即可实现对记录体的复制。

定义ODBC数据源

态王SQL访问功能能够和其他外部数据库(支持ODBC访问接口)之间的数据传输。实现数据传输必须在系统ODBC数据源中定义相应数据库。

进入“控制面板”中的“管理工具”,用鼠标双击“数据源 (ODBC)”选项,弹出“ODBC数据源管理器”对话框,如下图所示。

image.png

注意:

  • 组态王是32位,只支持32位ODBC。

  • 有些计算机的ODBC数据源是中文的(如上图所示),有些的是英文的,视机器而定,但是两种的使用方法相同。

  • “ODBC数据源管理器”对话框中前两个属性页分别是“用户DSN”和“系统DSN”,二者共同点是:在它们中定义的数据源都存储了如何与指定数据提供者在连接的信息,但二者又有所区别。在“用户DSN”中定义的数据源只对当前用户可见,而且只能用于当前机器上;在“系统DSN”中定义的数据源对当前机器上所有用户可见,包括NT服务。因此用户根据数据库使用的范围进行ODBC数据源的建立。

如何使组态王与数据库建立连接

使用组态王与数据库进行数据通讯,首先要建立它们之间的连接。下面通过一个实例介绍如何使组态王与数据库建立连接【在完成前两步的基础之上】。

◆ 连接数据库:新建画面“数据库连接”,在画面上作一个按钮,按钮文本为:“连接数据库”,在按钮“弹起时”动画连接中使用SQLConnect()函数和SQLSelect()函数建立与“某个”数据库进行连接:

SQLConnect( DeviceID, "dsn=mine;uid=root;pwd=password");

/建立和数据库mine连接,其中DeviceID是用户创建的内存整型变量,用来保存SQLConnect()函数为每个数据库连接分配的一个数值/

/注意在执行SQLDisconnect(断开和数据库的连接函数)之前,重复执行SQLConnect将会增加DeviceID,DeviceID最多为255/

SQLSelect( DeviceID, "kingview", "BIND", "", "");

/* SQLSelect()函数:访问一个数据库并返回一个表的信息,此信息可以被查询、删除、清空等操作*/

以上指令执行之后,使组态王与数据库建立了连接。

如何将数据存入数据库

创建数据库表格成功之后,可以将组态王中的数据存入到数据库表格中。下面通过一个实例介绍如何将数据存入数据库。

例:将数据存入数据库

◆ 在组态王中创建一个记录体:BIND1。定义三个字段:salary(整型,对应组态王变量record1)、name(定长字符串型,字段长度:255,对应组态王变量name)、age(整型,对应组态王变量age)。详细定义请参照“记录体”一节;

◆ 在“数据库连接” 画面上作一个按钮,按钮文本为:“插入记录”,在按钮“弹起时”动画连接中使用SQLInsert()函数:

SQLInsert( DeviceID, "KingTable", "BIND1" );

该命令使用记录体BIND1中定义的连接在表格KingTable中插入一个新的记录。

该命令执行后,组态王运行系统会将变量salary的当前值插入到 MySQL数据库表格“KingTable”中最后一条记录的“salary”字段中,同理变量name、age的当前值分别赋给最后一条记录的字段:name、age值。运行过程中可随时点击该按钮,执行插入操作,在数据库中生成多条新的记录,将变量的实时值进行保存。

SQL函数及SQL函数的参数

组态王使用SQL函数和数据库交换信息。这些函数是组态王标准函数的扩充,可以在组态王的任意一种命令语言中使用。这些函数允许你选择,修改,插入,或删除数据库表中的记录。

SQL****函数

以下列出所有的SQL函数。值得注意的是SQL查询功能是同步的,在SQL查询功能结束之前,控制权不能返回组态王(包括趋势曲线等将被挂起)。所有的SQL函数(除SQLNumRows()之外)都会返回一个结果代码。如果这个代码不为零,表明调用函数失败。结果代码可以通过SQLErrorMsg()函数得到。

SQL函数的通常格式如下:

SQLFunction(Parameter1,Parameter2,…)

函数:功能

SQLAppendStatement: 使用SQLStatement的内容继续一个SQL语句

SQLClearParam: 清除特定参数的值

SQLClearStatement: 释放和SQLHandle指定的语句相关的资源

SQLClearTable: 删除表格中的记录,但保留表格

SQLCommit: 定义一组transaction命令的结尾

SQLConnect
连接组态王到connectstring指定的数据库中

SQLCreatTable: 使用表格模板中的参数在数据库中

SQLDelete: 删除一个或多个记录

SQLDisconnect: 断开和数据库的连接

SQLDropTable: 破坏一个表格

SQLEndSelect: 在SQLSelect()后使用本函数来释放资源

SQLErrorMsg: 返回一个文本错误信息,此错误信息和特定的结果代码相关

SQLExecute: 执行一个SQL语句。如果这个语句是一个选择语句,捆绑表中的参数所指定的名字用来捆绑数据词典中变量和数据库的列

SQLFirst: 选择由SQLSelect()选择的表格中的首项记录

SQLGetRecord
从当前选择缓存区返回由RecordNumber指定的记录

SQLInsert: 使用捆绑表中指定的变量中的值在表格中插入一个新记录。捆绑表中的参数定义了组态王中变量和数据库表格列的对应关系

SQLInsertEnd: 释放插入语句

SQLInsertExecute: 执行已经准备的语句

SQLInsertPrepare: 准备一个插入语句

SQLLast: 选择SQLSelect()指定表格中的末项

SQLLoadStatement: 读包含在FileName中的语句,它类似与SQLSetStatement()创建的语句,能被SQLAppendStatement()挂起,或由SQLExecute()执行,每个文件中只能包含一个语句

SQLNext: 选择表中的下一条记录

SQLNumRows: 指出有多少条记录符合上一次SQLSeclect()的指定

SQLPrepareStatement: 本语句为SQLSetParam()准备一个SQL语句。一个语句可以由SQLSetStatement(),或SQLLoadStatement()创建

SQLPrev: 选择表中的上一条记录

SQLSelect: 访问一个数据库并返回一个表的信息,此信息可以被SQLFirst(),SQLLast(),SQLNext()和SQLPrev()

SQLSetParamChar: 将指定的参数设成特定的字符串。本函数可以调用多次,以设置参数值

SQLSetParamDate: 将指定的日期参数设置成特定的字符串

SQLSetParamDateTime: 将指定的日期时间参数设置成特定的字符串

SQLSetParamDecimal: 将指定的十进制参数设置成特定的字符串

SQLSetParamFloat: 将指定的参数设置成特定的值

SQLSetParamInt: 将指定的参数设置成特定的值

SQLSetParamLong: 将指定的参数设置成特定的值

SQLSetParamNull: 将指定的参数设置成空值

SQLSetParamTime: 将指定的时间参数设置成特定的字符串

SQLSetStatement: 启动一个语句缓存区,此语句缓存区由SQLStatement()使用

SQLTransact: 定义了一组访问指令的开始。在SQLTransact()指令和 SQLCommit()指令之间的一组指令称为一个访问组。一个访问组可以象单个访问一样操作。在SQLTransact()指令执行后,所有接下的操作都不委托给数据库,直到SQLCommit()指令执行

SQLUpdate: 用当前的组态王变量更新数据库中的记录

SQLUpdateCurrent: 更新数据库中的记录。注意:使用SQLUpdateCurrent时要求记录体关联的至少一个字段为表中的不可重复字段,并且该字段类型不为自动编号,不为浮点数。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容