必要条件:

1 SQL server 必须和操作系统相匹配,同时也必须和 WinCC (TIA Portal)相匹配。

注释:

样例只是一个建议的方法,当然,可能也会有其它更好的解决方案

创建数据源

为了创建一个对 ODBC 数据源的访问,必须首先创建一个数据源。在 Windows 控制面板的“管理工具 > 数据源(ODBC)”中创建数据源。以下的例子中使用的数据源是“Database_1”;连接到 SQL server “WINCCFLEXIBLE”。

c语言连接数据库步骤(在TIAPortal)(1)

SQL数据库的管理和使用

以下各节说明如何使用SQL数据库,使用VB脚本的摘录。这些脚本也在本条目的项目下载中。

1. 管理

在 SQL 数据库中可以创建一个或多个不同结构的数据表。

c语言连接数据库步骤(在TIAPortal)(2)

2. 表

在任何一个 SQL 数据库中都可以创建一个具有单独结构的数据表。表01的数据结构创建如下:

表的数据结构列1234数据类型

SMALLINT

Char(30)SMALLINTSMALLINT

表 01 - 表的数据结构

表的数据结构可以以任何方式组合。附件的样例程序使用的就是上面的数据结构。

c语言连接数据库步骤(在TIAPortal)(3)

3. 数据记录

每个 SQL 表都包含一定数量的数据记录。数据记录的结构取决于数据表的结构。

c语言连接数据库步骤(在TIAPortal)(4)

SQL 语法:

SELECT <表达式> FROM <表名> WHERE <条件>

注意:

对于 SQL 命令“SELECT”还有其它可选的命令组合。

使用“if”语法结构或者“rst.EOF”和“rst.BOF”可以判断数据记录是否存在。如果选择数据记录不存在,使用“rts.MoveFirst”指向第一条数据记录。

使用下面的语法可以传输列名:

szColumnName_1 = rst.Fields(1).Name

使用下面的语法可以用来得到数据记录中特定的数据:

nDataRecord_2 = rst.Fields(2).Value

3.2 写数据记录: 脚本"Write_data_record_into_a_table"

访问中使用到的对象和从 SQL 表中读数据记录使用的对象相同。

在数据源提供者已经存在的情况下,通过 SQL 命令“SELECT * FROM”"联合表名和扩展项“WHERE”选择适当的数据记录。

c语言连接数据库步骤(在TIAPortal)(5)

SQL 语法:

SELECT <表达式> FROM <表名> WHERE <条件>

注意:

对于 SQL 命令“SELECT”还有其它可选的扩展参数。

如果数据记录不存在,指针将复位到表的第一行。如在3.1中查询“EOF = End ofFile”和“BOF = Begin of File”用于检测数据记录是否存在。

为了添加数据记录需要使用 SQL 命令“INSERT INTO”和SQL表名。另外,输入表中的所有参数通过“VALUES”指定,使用逗号作为分隔符。

通过“conn”对象的“Execute”方法执行 SQL 语句。

c语言连接数据库步骤(在TIAPortal)(6)

c语言连接数据库步骤(在TIAPortal)(7)

SQL 语法:

SELECT <表达式> FROM <表名> WHERE <条件>

注意:

对于 SQL 命令“SELECT”还有其它可选的扩展参数。

使用查询“EOF”和“BOF”如果数据记录存在,脚本首先赋值给表中指定的列。

使用 SQL 语句“UPDATE”结合扩展命令“Set”和 SQL 表名可以实现对数据记录元素的赋值,该 SQL 语句通过“conn.Execute(SQL_表)”执行。

c语言连接数据库步骤(在TIAPortal)(8)

4. 数据记录表

SQL 也可以用于显示一个 SQL 表中全部或多个数据记录的内容。为了连接数据库需要使用到“ADODB.Connection”和“ADODB.Recordset”两个对象。

c语言连接数据库步骤(在TIAPortal)(9)

SQL 语法:

SELECT <表达式> FROM <表名> ORDER BY <列名> ASC

注意:

指令“ASC”指按照升序分类,指令“DESC”指按照降序分类。除非另有说明默认按照升序分类。SQL 指令“SELECT”可与其它语法结合使用。

表中的记录是使用“Do...Loop Until”循环和“MoveNext”指令输入的。指令“rst.MoveFirst”将指针指向到表的第一个条目。

在本例中的表最多可以同时输出6条记录,在 WinCC flexible 中可以使用箭头按钮实现对表的选取。变量"Tab"的值会在零和条目数减去显示的数据记录数量之间变化。当选择的表发生变化,SQL 表的指针也发生移动。这是通过指令“MoveNext”来实现的。

c语言连接数据库步骤(在TIAPortal)(10)

下面的语法用于访问数据记录中的单个数据:

Value_1_0 = rst.Fields(0).Value

Value_1_1 = rst.Fields(1).Value

Value_1_2 = rst.Fields(2).Value

c语言连接数据库步骤(在TIAPortal)(11)

4.2 将所有数据写入表:脚本 "Write_all_entries_in_a_table"

一旦数据源被打开,可以使用 SQL 命令“SELECT * FROM”加表名并结合参数“WHERE”实现对特定数据的读取,通过特定列的内容和数据记录的详细信息相比较来选择数据。

c语言连接数据库步骤(在TIAPortal)(12)

SQL 语法:

SELECT <表达式> FROM <表名> WHERE <条件>

注意:

SQL 命令“SELECT”可以和其它指令一起使用。

如果数据记录包含在表中,SQL 命令“UPDATE”用于使用新的参数覆盖数据记录。如果数据记录不包含在表中,使用 SQL 命令“INSERT INTO”添加。

c语言连接数据库步骤(在TIAPortal)(13)

如在3.1中查询“EOF = End of File”和“BOF = Begin of File”用于检测数据记录是否存在。

c语言连接数据库步骤(在TIAPortal)(14)

,