Connecting to a Database from the App | MuleSoft Documentation
# Connecting to a Database from the App
Cloud IDE 
Desktop IDE 
**Open Beta Release** : The **cloud IDE is in open beta**. Any use of Anypoint Code Builder in its beta state is subject to the applicable beta services terms and conditions, available from the IDE.
Use Anypoint Connector for Database (Database Connector) to connect to an external database from your Mule flow.
## Before You Begin
Complete Integrating American Flights Processes.
## Open Your American Flights Application
  1. In Anypoint Code Builder, open `american-ws-anypoint-code-builder.xml`.
  2. Remove the `<set-payload>` component from the configuration XML:
```
<set-payload value="Flight info" doc:name="Set Response" />
```



## Add a Database Driver Dependency
The Database Connector supports a variety of Java Database Connectivity (JDBC) databases.
Provide the dependency for the `mySQL` driver:
  1. Open the **Explorer** menu by pressing Cmd+Shift+e (Mac) or Ctrl+Shift+e (Windows).
  2. Open the `pom.xml` file.
  3. Add a new dependency within the `<dependencies/>` element:
```
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.29</version>
</dependency>
```

  4. If you receive a popup with the message `A build file was modified. Do you want to synchronize the Java classpath/configuration?`, select **Yes**.
  5. In the `pom.xml`, replace the existing `<configuration/>` element within your `mule-maven-plugin` with a new shared library:
```
<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-maven-plugin</artifactId>
  <version>${mule.maven.plugin.version}</version>
  <extensions>true</extensions>
  <configuration>
   <sharedLibraries>
    <sharedLibrary>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
    </sharedLibrary>
   </sharedLibraries>
  </configuration>
</plugin>
```

  6. If requested, accept **Yes** to sync the Java classpath.
  7. Proceed to Add a Database Connector Configuration.


## Add a Database Connector Configuration
  1. In Anypoint Code Builder, open `american-ws-anypoint-code-builder.xml`.
  2. In the configuration XML, add the global `<db:config/>` snippet.
    1. Place your cursor before the opening <flow> tag.
    2. Press Ctrl+Spacebar (Mac) or Cmd+Spacebar (Windows).
    3. Type `mysql` to search for the snippet.
    4. Select the snippet `db:mysql-config`.
Snippet XML before the opening <flow> tag:
```
<db:config name="Mysql_Database_Config" >
 <db:my-sql-connection host="${mysql.host}" port="${mysql.port}"
   user="${mysql.username}" password="${mysql.password}"
   database="${mysql.database}" />
</db:config>
<flow name="getFlights" >
...
```

    5. Edit the attributes in `<db:config/>` to produce this XML configuration:
```
<db:config name="Database_Config" doc:name="mySQL DB">
  <db:my-sql-connection
   host="mudb.learn.mulesoft.com"
   port="3306"
   user="mule"
   password="mule"
   database="training" />
</db:config>
```

  3. Review the complete configuration XML:
```
<http:listener-config name="inbound-request" doc:name="HTTP Config">
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<db:config name="Database_Config" doc:name="mySQL DB">
  <db:my-sql-connection host="mudb.learn.mulesoft.com" port="3306"
    user="mule" password="mule" database="training" />
</db:config>
<flow name="getFlights">
  <http:listener path="flights" config-ref="inbound-request"
     doc:name="HTTP /flights" />
</flow>
```

The `getFlights` flow contains an expected error: `The content of element 'flow' is not complete.` This error is present until you add a connector later in this procedure.   
---  
  4. Proceed to Write a Query to Return All Flights.


## Write a Query to Return All Flights
  1. From the canvas, click the (**Add component**) icon after the HTTP Listener component.
  2. Add the **Select** operation for Anypoint Connector for Database (Database Connector).
Either search for **Select** or navigate to the operation from **Connectors** > **Database** > **Select**.
  3. Provide this configuration for the snippet:
     * From the canvas
     * From the configuration XML
Click the **Select** operation to open its configuration panel, and set the Select attributes to the following values:
Change the connector name to `Query Flights`.  
---  
Select `Database_Config` from the connector configuration dropdown menu.  
Set the **Query** attribute to `Select * FROM american`.  
In `<db:select/>`, set the attributes to the values provided in the example.
```
<db:select doc:name="Query Flights" config-ref="Database_Config" >
 <db:sql>
  <![CDATA[Select * FROM american]]>
 </db:sql>
</db:select>
```

Notice that the `config-ref` attribute references the database connection configuration in `<db:config/>` by its `name`.
  4. Review the complete configuration XML:
```
<http:listener-config name="inbound-request" doc:name="HTTP Config">
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<db:config name="Database_Config" doc:name="mySQL DB">
  <db:my-sql-connection host="mudb.learn.mulesoft.com" port="3306"
    user="mule" password="mule" database="training" />
</db:config>
<flow name="getFlights">
  <http:listener path="flights" config-ref="inbound-request" doc:name="HTTP /flights" />
  <db:select doc:name="Query Flights" config-ref="Database_Config" doc:id="qcnfxf" >
    <db:sql>
      <![CDATA[Select * FROM american]]>
    </db:sql>
  </db:select>
</flow>
```

  5. Proceed to Transforming Flight Data with DataWeave to learn how to use DataWeave to make the database response match examples in your American Flight API specification.