Skip to content

数据库 API ​

AirScript 提供一个全局的 SQL 对象,开发者可通过此对象提供的属性和方法连接到外部数据库服务,连接成功后即可执行 SQL 语句,对数据进行增删改查。

提示

在使用 SQL 对象连接数据库之前,确保您已添加数据库API服务,在脚本编辑器的【工具栏】-【服务】菜单内添加即可。

快速使用 ​

js
// 连接MySQL数据库
const connection = SQL.connect(SQL.Drivers.MySQL, {
  host: '127.0.0.1',
  username: 'root',
  password: '123456',
  database: 'mydb',
  port: 3306
})

// 执行SQL语句,查询test表的所有数据
const result1 = connection.queryAll('SELECT * FROM test')
// 打印执行结果
console.log(result1)

// 执行SQL语句,插入数据
const result2 = connection.queryAll(
  'INSERT INTO test (id,test_data) VALUES (?,?), (?,?)',
  [1, 1, 2, 2]
)
// 打印执行结果
console.log(result2)

// 关闭数据库连接
connection.close()

属性列表 ​

属性名数据类型说明
Driversobject数据库连接驱动集
Typesobject数据库字段类型集(仅适用于 SQL server)

方法列表 ​

方法返回类型说明
connect()Connection连接目标数据库
Connection.queryAll()Result执行 SQL 语句
Connection.close()null关闭数据库连接

Drivers ​

数据库驱动集,调用connect()方法连接数据库时传入对应驱动,目前仅支持 MySQL 和 SQL server 两种驱动,只读

属性说明 ​

属性名数据类型说明
MySQLstringMySQL 数据库驱动
PostgreSQLstringPostgreSQL 数据库驱动
SQLServerstringSQL server 数据库驱动

Types ​

数据库字段类型集,请注意,该类型集仅适用于 SQL server 数据库,MySQL 数据库不需要传递此值

属性说明 ​

Exact numerics ​

属性名对应 Javascript 类型
BitBoolean
TinyIntNumber
SmallIntNumber
IntNumber
BigIntString
NumericNumber
DecimalNumber
SmallMoneyNumber
MoneyNumber

Approximate numerics ​

属性名对应 Javascript 类型
FloatNumber
RealNumber

Date and Time ​

属性名对应 Javascript 类型
SmallDateTimeDate
DateTimeDate
DateTime2Date
DateTimeOffsetDate
TimeDate
DateDate

Character Strings ​

属性名对应 Javascript 类型
CharString
VarCharString
TextString

Unicode Strings ​

属性名对应 Javascript 类型
NCharString
NVarCharString
NTextString

Binary Strings ​

属性名对应 Javascript 类型
BinaryBuffer
VarBinaryBuffer
ImageBuffer

Other Data Types ​

属性名对应 Javascript 类型
Nullnull
TVPObject
UDTBuffer
UniqueIdentifierString
Variantany
xmlString

connect() ​

连接目标数据库,目前仅支持 MySQL、PostgreSQL 和 SQL server 三种类型的数据库,连接成功后会返回数据库连接对象,可通过此对象执行 SQL 语句,程序结束之前请调用close()方法关闭数据库连接。

参数 ​

属性数据类型默认值必填说明
driverDrivernull是指定目标数据库驱动
optionsOptionsnull是数据库连接信息

options 对象说明 ​

属性数据类型默认值必填说明
hoststringnull是目标数据库主机
portnumbernull是目标数据库端口
usernamestringnull是目标数据库连接用户名
passwordstringnull是目标数据库连接密码
databasestringnull是目标数据库名

返回值 ​

Connection - 数据库连接对象

示例 ​

js
// 连接MySQL数据库
const connection = SQL.connect(SQL.Drivers.MySQL, {
  host: '127.0.0.1',
  port: 3340,
  username: 'jinxiaomeng',
  password: '123',
  database: 'WPS_TEST'
})

Connection.queryAll() ​

通过上述的connect()方法成功连接数据库后,会返回数据库连接对象,通过此对象即可调用 queryAll()方法执行 SQL 语句

参数 ​

属性数据类型默认值必填说明
sqlstringnull是要执行的 sql 语句
InsertDataany[] | InsertDatanull否需要插入的数据

InsertData 对象说明 ​

属性数据类型默认值必填说明
namestringnull是插入数据的字段名
valuestringnull是插入数据的值
typeTypesnull否插入数据的类型,SQL server 数据库必须传递该类型

返回值 ​

Result 对象,包含受影响的行数以及返回的数据行

属性数据类型说明
affectRowCountnumber执行 sql 语句后受到影响的行数
rowsArray数据行,根据实际查询的表的数据结构返回

返回示例 ​

json
// 查询时的返回
{
  "affectRowCount": 0,
  "rows": [
    [
      {
        "name": "1",
        "value": 2
      }
    ]
  ]
}

// 增删改时的返回
{
  "affectRowCount": 1,
  "rows": []
}

示例 ​

js
// 连接SQL server数据库
const connection = SQL.connect(SQL.Drivers.SQLServer, {
  host: 'x.x.x.x',
  username: 'x',
  password: 'x',
  database: 'x',
  port: 1433
})

// 执行sql语句,插入两条数据
const result1 = connection.queryAll(
  'INSERT INTO TestSchema.Employees (Name, Location) OUTPUT INSERTED.Id VALUES (@Name, @Location);',
  [
    {
      name: 'Name',
      type: SQL.Types.NVarChar,
      value: 'zhangsan'
    },
    {
      name: 'Location',
      type: SQL.Types.NVarChar,
      value: 'zhuhai'
    }
  ]
)

// 打印执行结果
console.log(result1)

// 执行sql语句,查询员工表
const result2 = connection.queryAll(
  'SELECT Id, Name, Location FROM TestSchema.Employees;'
)

// 打印执行结果
console.log(result2)

// 关闭数据库连接
connection.close()

Connection.close() ​

关闭数据库连接,请务必在程序结束前调用此方法

示例 ​

js
// 连接MySQL数据库
const connection = SQL.connect(SQL.Drivers.MySQL, {
  host: '127.0.0.1',
  port: 3340,
  username: 'jinxiaomeng',
  password: '123',
  database: 'WPS_TEST'
})

// do something

// 关闭数据库连接
connection.close()