com.smartgwt.client.docs

## Interface DbConfigTool

-     public interface DbConfigTool

  ### Database Configuration

  DataSources that use Smart GWT's built-in `SQL engine` refer to configuration settings from the `server.properties` file for database access.

  Developers may make use of the `Admin Console tool` to set up database configuration blocks, or they may add configuration settings to `server.properties` by hand. Note that you should restart your servlet engine after changing this file.

  Manually specifying database connection settings

  Within an application deployment, the `server.properties` file resides in the `WEB-INF/classes` directory.

  For each database, configuration settings within this file are prefixed with `"sql.<dbName>"`.
  For example, the following settings are the defaults in a new Smart GWT installation for a MySQL server; they are approximately correct for a MySQL server running on the same machine as the servlet engine and listening on the default MySQL port. For details of what each of these properties means, check `this page`.

          sql.Mysql.database.type: mysql
          sql.Mysql.database.ansiMode: false
          sql.Mysql.interface.type: dataSource
          sql.Mysql.driver: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
          # name of the database to use
          sql.Mysql.driver.databaseName: isomorphic
          # hostname and port where the database server is installed
          sql.Mysql.driver.serverName: localhost
          sql.Mysql.driver.portNumber: 3306
          # username and password that can create and modify tables in that database
          # this user must have the following privileges for the system to function
          # properly: create/alter/drop table; insert/update/replace/delete rows.
          sql.Mysql.driver.user: root
          sql.Mysql.driver.password:

  Note the distinction here between database type and database name. Database type refers to the actual product - Oracle, DB2 or whatever. In the above example, database type is "mysql" (all lowercase) - the value of property `sql.Mysql.database.type`. Database type is very important. The type of a given database connection dictates whether features like SQL paging and transactions are supported; it even dictates the syntax of the SQL we generate.

  Database name is just an arbitrary name for a particular database connection, and it is embedded in the property names immediately after the `sql` prefix. In this example it happens to be very similar to the database type - "Mysql" as opposed to "mysql" - but in fact the name has no significance and could be any string. When referring to specific database connections in your `DataSources` with the `dbName` property, it is the database name you use.

  NOTE: It is common for DataSources to not specify `dbName`. In this case, the default database is used. To specify the default database manually in `server.properties`, set `sql.defaultDatabase`, using database name. So, to set our example connection from above as the default:

          sql.defaultDatabase: Mysql

  Manually specifying JNDI settings

  Instead of specifying database connection parameters directly in `server.properties`, it is possible to connect to a database that is configured as a JNDI resource in your application server. Assume you have an Oracle JNDI resource with the name "jndiTest", configured similar to this in Tomcat:

          <Resource name="jdbc/jndiTest"
                           auth="Container"
                           type="javax.sql.DataSource"
                           driverClassName="oracle.jdbc.driver.OracleDriver"
                           url="jdbc:oracle:thin:@192.168.132.152:1521:xe"
                           username="system"
                           password="manager"
                           initialSize="5"
                           maxActive="50" />

  The minimal set of properties required to create a Smart GWT database connection that attaches to this resource is as follows (Note that the `java:comp/env/` prelude in the first line is optional - the server will automatically look there if it can't find the resource in the absolute location)

          sql.myOracleConnection.driver.name: java:comp/env/jdbc/jndiTest
          sql.myOracleConnection.database.type: oracle
          sql.myOracleConnection.interface.type: jndi

  See Also:
    `AdminConsole`, `Server_properties`, `SqlConnectionPooling`, `TestData`