使用 Node.js 查询 Azure SQL 数据库

本快速入门教程演示了如何使用 Node.js 来创建连接到 Azure SQL 数据库的程序,并使用 Transact-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 驱动程序和 SQL CMD。 请参阅步骤 1.2 和 1.3

SQL Server 连接信息

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

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

    server-name

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

Important

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

创建 Node.js 项目

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

npm init -y
npm install tedious
npm install async

插入用于查询 SQL 数据库的代码

  1. 在开发环境或常用的文本编辑器中,创建一个新文件 sqltest.js

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

    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    
    // Create connection to database
    var config = 
       {
         userName: 'someuser', // update me
         password: 'somepassword', // update me
         server: 'edmacasqlserver.database.chinacloudapi.cn', // update me
         options: 
            {
               database: 'somedb' //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
         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);
       }
    

运行代码

  1. 在命令提示符下运行以下命令:

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

后续步骤