在 InTouch 中执行常见的 SQL 操作
- Last UpdatedSep 24, 2024
- 2 minute read
InTouch 使用 SQL Access 函数与数据库中存储的信息进行交互。通过使用这些 SQL Access 函数,可以编写脚本来选择、修改、插入或删除数据库记录。
SQL 动作是同步型的。从 InTouch 应用程序中运行数据库 QuickScript 时,只有在函数请求的数据库操作完成之后,控制权才返回给 InTouch。
SQL Access 函数遵循一些标点符号标准,用以描述与函数关联的参数的类型。使用英文双引号括起的脚本字符串来输入参数 ("Arg1") 时,会完全按照原样使用该字符串。如果未使用英文双引号,则将参数值视位标记名,同时将标记的当前值与该参数关联起来。
大多数 SQL 函数都会返回结果码。如果结果码不为零,则函数失败,此时应该采取其它措施。结果码可以由 SQLErrorMsg() 函数使用。
通过使用 InTouch QuickScript 编辑器,可以将 SQL 函数插入到 QuickScript 中。将 SQL 函数插入到脚本中的一般操作程序包括以下步骤:
将 SQL 函数添加到脚本中
-
启动 InTouch WindowMaker。
-
使用 QuickScript 编辑器打开 QuickScript。
-
将光标放到脚本中要插入 SQL 函数的位置。
-
在函数区域中,单击附件以显示选择函数对话框。
-
选择要插入到 QuickScript 中的 SQL 函数。此时该脚本更新并显示所插入的 SQL 函数。
与 SQL Access 函数关联的参数包括:
-
BindList
对应于 SQL.DEF 文件中定义的“绑定列表”名。
-
ConnectionID
ConnectionID 参数引用某个内存整型标记的名称,该标记存放由 SQLConnect() 函数指定给每个数据库连接的编号 (ID)。
-
ConnectString
ConnectString 确定数据库系统以及任何附加的登录信息。它按照以下格式输入:
"DSN=data source name[;attribute=value
[;attribute=value]...]"
Microsoft SQL Server 连接字符串
-
Microsoft OLE DB Provider for SQL Server(建议使用)。
"Provider=SQLOLEDB.1;User ID=sa; Password=;Initial Catalog=MyDB;Data Source=MyServer;"
OLE DB Provider for SQL Server 是 sqloledb。
-
Microsoft OLE DB Provider for SQL Server(建议使用)
"Provider=SQLOLEDB.1;uid=sa;pwd=;Database=MyDB"
-
Microsoft OLE DB Provider for ODBC(使用缺省供应器 MSDASQL for SQL Server):
"DSN=Pubs;UID=sa;PWD=;"
-
Microsoft OLE DB Provider for ODBC(使用缺省供应器 MSDASQL for SQL Server):
"Data Source=Pubs;User ID=sa;Password=;"
Oracle 连接字符串
-
Microsoft OLE DB Provider for Oracle(建议使用)
"Provider=MSDAORA;Data Source=ServerName;User ID=UserIDStr; Password=PasswordStr;"
Microsoft Access 连接字符串
Microsoft OLE DB Provider for Microsoft Jet(建议使用)。Microsoft.Jet.OLEDB.4.0 是本机 OLE DB Provider for Microsoft Jet(Microsoft Access Database 引擎)。
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\DBName.mdb;User ID=UserIDStr;Password=PasswordStr;"
Microsoft OLE DB Provider for ODBC(使用缺省供应器 MSDASQL for MS Access):
"Provider=MSDASQL;DSN=DSNStr;UID=UserName; PWD=PasswordStr;"
-
-
ErrorMsg
包含对错误的文本描述的消息变量。
-
FileName
包含信息的文件的名称。
-
MaxLen
与参数关联的列的最大长度。此参数确定数据是可变字符型还是长可变字符型。如果 MaxLen 小于或等于数据库允许的最大字符串长度,则数据是可变字符型。如果大于该数值,则数据是长可变字符型。
-
OrderByExpression
定义各个列以及是按升序还是降序进行排列。只有列名可用于排序。表达式必须采用以下格式:
ColumnName [ASC|DESC]
要按列名的升序方式给所选的表排序:
"manager ASC"
要按多个列进行排序,则表达式的格式为:
ColumnName [ASC|DESC],
ColumnName [ASC|DESC]
要按某个列名(如 temperature)的升序、另一个列名(如 time)的降序给所选的表排序:
"temperature ASC, time DESC"
-
ParameterNumber
语句中的实际参数编号。
-
ParameterType
指定的参数的数据类型。有效值是:
类型
描述
Char
用空格填充的固定长度字符串
Var Char
可变长度字符串
十进制
BCD 数
整型
4 字节带符号整数
小整数
2 字节带符号整数
浮点
4 字节的浮点数
双精度浮点数
8 字节的浮点数
日期时间
8 字节日期时间值
日期
4 字节日期时间值
时间
4 字节日期时间值
无类型
无数据类型
-
ParameterValue
要设置的实际值。
-
精度
是十进制值的精度、字符的最大个数,或日期时间值的字节长度。
-
RecordNumber
要检索的实际记录号。
-
ResultCode
大多数 SQL 函数都会返回的整型变量。如果函数执行成功,则返回的 ResultCode 是零 (0);如果失败,则返回负整数。
-
刻度
是十进制值的小数位数。仅当适用于要设置为空的参数时,才需要使用此值。
-
StatementID
使用高级功能语句时,SQL 返回供内部使用的 StatementID。
-
SQLStatement
实际的语句,例如:
ResultCode=SQLSetStatement(ConnectionID, "Select LotNo, LotName from LotInfo");
-
TableName
TableName 参数包含要在数据库中访问或创建的表的名称。
-
TemplateName
TemplateName 参数是 SQL.DEF 文件中定义表的模板的名称。
-
WhereExpr
为表中的任一行定义的可以为真或为假的条件。函数仅提取表中条件为真的那些行。表达式必须采用以下格式:
ColumnName comparison_operator expression
注意:如果列的数据类型是字符,则表达式必须使用英文单引号括起来。
下例选择 Name 列包含 EmployeeID 值的所有行:
Name='EmployeeID'
下例选择包含部件号 100 到 199 的所有行:
partno>=100 and partno<200
下例选择 temperature 列包含的值大于 350 的所有记录:
temperature>350