Quickstart: Use Node.js to query an Azure SQL database

This quickstart demonstrates how to use Node.js to connect to an Azure SQL database. You can then use T-SQL statements to query data.

Prerequisites

To complete this sample, make sure you have the following prerequisites:

  • An Azure SQL database. You can use one of these quickstarts to create and then configure a database in Azure SQL Database:

    Single database Managed instance
    Create Portal Portal
    CLI CLI
    PowerShell PowerShell
    Configure Server-level IP firewall rule Connectivity from a VM
    Connectivity from on-site
    Load data Adventure Works loaded per quickstart Restore Wide World Importers
    Restore or import Adventure Works from BACPAC file from GitHub

    Important

    The scripts in this article are written to use the Adventure Works database. With a managed instance, you must either import the Adventure Works database into an instance database or modify the scripts in this article to use the Wide World Importers database.

  • Node.js-related software for your operating system:

    • MacOS, install Homebrew and Node.js, then install the ODBC driver and SQLCMD. See Step 1.2 and 1.3.

    • Ubuntu, install Node.js, then install the ODBC driver and SQLCMD. See Step 1.2 and 1.3.

    • Windows, install Chocolatey and Node.js, then install the ODBC driver and SQLCMD. See Step 1.2 and 1.3.

Get SQL server connection information

Get the connection information you need to connect to the Azure SQL database. You'll need the fully qualified server name or host name, database name, and login information for the upcoming procedures.

  1. Sign in to the Azure portal.

  2. Go to the SQL databases or SQL managed instances page.

  3. On the Overview page, review the fully qualified server name next to Server name for a single database or the fully qualified server name next to Host for a managed instance. To copy the server name or host name, hover over it and select the Copy icon.

Create the project

Open a command prompt and create a folder named sqltest. Open the folder you created and run the following command:

npm init -y
npm install tedious

Add code to query database

  1. In your favorite text editor, create a new file, sqltest.js.

  2. Replace its contents with the following code. Then add the appropriate values for your server, database, user, and password.

    const { Connection, Request } = require("tedious");
    
    // Create connection to database
    const config = {
      authentication: {
        options: {
          userName: "username", // update me
          password: "password" // update me
        },
        type: "default"
      },
      server: "your_server.database.windows.net", // update me
      options: {
        database: "your_database", //update me
        encrypt: true
      }
    };
    
    const connection = new Connection(config);
    
    // Attempt to connect and execute queries if connection goes through
    connection.on("connect", err => {
      if (err) {
        console.error(err.message);
      } else {
        queryDatabase();
      }
    });
    
    function queryDatabase() {
      console.log("Reading rows from the Table...");
    
      // Read all rows from table
      const 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`,
        (err, rowCount) => {
          if (err) {
            console.error(err.message);
          } else {
            console.log(`${rowCount} row(s) returned`);
          }
        }
      );
    
      request.on("row", columns => {
        columns.forEach(column => {
          console.log("%s\t%s", column.metadata.colName, column.value);
        });
      });
    
      connection.execSql(request);
    }
    

Note

The code example uses the AdventureWorksLT sample database for Azure SQL.

Run the code

  1. At the command prompt, run the program.

    node sqltest.js
    
  2. Verify the top 20 rows are returned and close the application window.

Next steps