快速入门:使用 Node.js 查询 Azure SQL 数据库

本文演示了如何使用 Node.js 连接到 Azure SQL 数据库。 然后即可使用 T-SQL 语句来查询数据。

先决条件

若要完成此示例,请确保具备以下先决条件:

  • 针对所用计算机的公共 IP 地址制定服务器级防火墙规则

  • 适用于操作系统的 Node.js 相关软件:

    • MacOS:安装 Homebrew 和 Node.js,然后安装 ODBC 驱动程序和 SQLCMD。 请参阅步骤 1.2 和 1.3

    • Ubuntu:安装 Node.js,然后安装 ODBC 驱动程序和 SQLCMD。 请参阅步骤 1.2 和 1.3

    • Windows:安装 Chocolatey 和 Node.js,然后安装 ODBC 驱动程序和 SQLCMD。 请参阅步骤 1.2 和 1.3

获取数据库连接

获取连接到 Azure SQL 数据库所需的连接信息。 在后续过程中,将需要完全限定的服务器名称、数据库名称和登录信息。

  1. 登录到 Azure 门户
  2. 从左侧菜单中选择“SQL 数据库”,并单击“SQL 数据库”页上的数据库。
  3. 在数据库的“概览”页上,查看如下图所示的完全限定的服务器名称。 将鼠标悬停在服务器名称上即可打开“通过单击进行复制”选项。

    server-name

  4. 如果忘了服务器的登录信息,请导航到 SQL 数据库服务器页,以查看服务器管理员名称。 如有必要,请重置密码。

Important

对于在其上执行本教程操作的计算机,必须为其公共 IP 地址制定防火墙规则。 如果使用其他计算机或其他公共 IP 地址,则使用 Azure 门户创建服务器级防火墙规则

创建项目

打开命令提示符,并创建一个名为 sqltest 的文件夹。 导航到已创建的文件夹,并运行以下命令:

npm init -y
npm install tedious
npm install async

添加用于查询数据库的代码

  1. 在喜欢的文本编辑器中,创建新文件 sqltest.js

  2. 将其内容替换为以下代码。 然后,为服务器、数据库、用户和密码添加相应的值。

    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    
    // Create connection to database
    var config =
    {
        userName: 'your_username', // update me
        password: 'your_password', // update me
        server: 'your_server.database.chinacloudapi.cn', // update me
        options:
        {
            database: 'your_database', //update me
            encrypt: true
        }
    }
    var connection = new Connection(config);
    
    // Attempt to connect and execute queries if connection goes through
    connection.on('connect', function(err)
        {
            if (err)
            {
                console.log(err)
            }
            else
            {
                queryDatabase()
            }
        }
    );
    
    function queryDatabase()
    {
        console.log('Reading rows from the Table...');
    
        // Read all rows from table
        var request = new Request(
            "SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc "
                + "JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid",
            function(err, rowCount, rows)
            {
                console.log(rowCount + ' row(s) returned');
                process.exit();
            }
        );
    
        request.on('row', function(columns) {
            columns.forEach(function(column) {
                console.log("%s\t%s", column.metadata.colName, column.value);
            });
        });
        connection.execSql(request);
    }
    

Note

代码示例使用适用于 Azure SQL 的 AdventureWorksLT 示例数据库。

运行代码

  1. 在命令提示符下运行此程序。

    node sqltest.js
    
  2. 验证是否已返回前 20 行,然后关闭应用程序窗口。

后续步骤