涉及部分概念,如下:
记录体
记录体用来连接表格的列和组态王数据词典中的变量。选择工程浏览器左侧大纲项“SQL访问管理器文件\记录体”,在工程浏览器右侧用鼠标左键双击“新建”图标,弹出对话框如下图所示。该对话框用于建立新的记录体。
记录体名:记录体的名称,长度不超过32个字符;
字段名称:数据库表格中的列名,长度不超过32个字符;
变量:与数据库表格中指定列相关联的组态王变量名称。点击右边“?”按钮,弹出“选择变量名”窗口,可以从中选择变量;
增加字段:在上面定义完字段名称和组态王变量后,点击“增加字段”按钮,将会把定义好的字段增加到显示框中;
删除字段:从显示框中选中已有字段的字段名称,点击“删除字段”按钮,将会把定义好的字段从显示框中删除;
修改字段:从显示框中选中已有字段的字段名称,此时该字段名称和对应组态王变量名称会显示在各项中,对各项进行修改,然后点击“修改字段”按钮,将会把修改后的字段重新显示在显示框中,修改完字段后,必须点击“确认”按钮才会保存修改内容;
上移一行:从显示框中选中已有字段的字段名称,点击“上移一行”按钮,将会把选中的字段向上移动一行;
下移一行:从显示框中选中已有字段的字段名称,点击“下移一行”按钮,将会把选中的字段向下移动一行。
复制记录体:选中已定义的记录体,点右键,从弹出的右键菜单中选择“复制编辑”,最后点“确认”,即可实现对记录体的复制。
定义ODBC数据源
态王SQL访问功能能够和其他外部数据库(支持ODBC访问接口)之间的数据传输。实现数据传输必须在系统ODBC数据源中定义相应数据库。
进入“控制面板”中的“管理工具”,用鼠标双击“数据源 (ODBC)”选项,弹出“ODBC数据源管理器”对话框,如下图所示。
注意:
组态王是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时要求记录体关联的至少一个字段为表中的不可重复字段,并且该字段类型不为自动编号,不为浮点数。