Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Table of Contents
Warning | ||
---|---|---|
| ||
When using Hash Variable that uses URL parameter or user-inputted value in the SQL query, ensure that these hash variable(s) are escaped in the query! Make use of hash variable escape keywords, see Hash Variable - Escaping the Resultant Hash Variable. Example of VULNERABLE query :
To fix this, use ?sql hash variable escape:
|
...
JDBC Form Binder allows you to use custom SQL statements to retrieve and load records into your form fields. Similarly, you can write SQL statements to save the records in your form field into a database table.
...
JDBC Binders comes standard in Joget v6 and DX. If you are using Joget v5, you can download the JDBC Binders from Joget Marketplace.
Figure 1: JDBC Form Load Binder PropertiesBinder selected as Load & Save Binder
Figure 2: Configure JDBC Binder
Name | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Datasource |
By selecting Default Datasource, the database your Joget is currently using will be selected. (See Figure 2). | |||||||||
Custom JDBC Driver | Custom JDBC Driver. This field is required when Custom Datasource is selected in Datasource above. Example: | |||||||||
Custom JDBC URL | Custom JDBC URL. This field is required when Custom Datasource is selected in Datasource above. Example: | |||||||||
Custom JDBC Username | Custom JDBC Username. This field is required when Custom Datasource is selected in Datasource above. | |||||||||
Custom JDBC Password | Custom JDBC Password. This field is required when Custom Datasource is selected in Datasource above.
| |||||||||
SQL SELECT Query for Load Binder | The SQL query specific to your database type (MySQL, MSSQL, Oracle, etc.). Use question mark ? in your query to represent the primary key or foreign key.
|
Figure 2: JDBC Form Store Binder Properties
| ||||||||||||
Handling for field workflow variable? | Click to select if you are using workflow variables mapping in your form elements. Not applicable for grid elements. | |||||||||||
Handling for uploaded files? | Click to select if you are using file or image attachments in your form elements. Select form to store uploaded files only if you are using form grid or spreadsheet. |
Figure 3: Configure Store JDBC Binder
Note | |||||||
---|---|---|---|---|---|---|---|
|
Name | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Store Binder | JDBC Binder selected (See Figure 1). | ||||||||||||||||||||
Datasource |
| ||||||||||||||||||||
Name | Description | ||||||||||||||||||||
Datasource |
By selecting Default Datasource, the database your Joget is currently using will be selected. (See Figure 3). | ||||||||||||||||||||
Custom JDBC Driver | Custom JDBC Driver. This field is required when Custom Datasource is selected in Datasource above. Example: | ||||||||||||||||||||
Custom JDBC URL | Custom JDBC URL. This field is required when Custom Datasource is selected in Datasource above. Example: | ||||||||||||||||||||
Custom JDBC Username | Custom JDBC Username. This field is required when Custom Datasource is selected in Datasource above. | ||||||||||||||||||||
Custom JDBC Password | Custom JDBC Password. This field is required when Custom Datasource is selected in Datasource above.
| ||||||||||||||||||||
SQL SELECT Query for store binder | The SQL query specific to your database type (MySQL, MSSQL, Oracle, etc.). Use syntax like {field_id} in query to inject submitted form data.
Note: If you use JDBC in a form grid or spreadsheet for load /or save binder, be advised the SQL syntax is different from the aboveform load or save binder. Kindly download and view the sample app for JDBC in a form grid at the bottom of this pageor spreadsheet. | ||||||||||||||||||||
SQL INSERT Query | Use syntax like curly brackets {field_id} in query to inject submitted form data.
You can use {uuid} to tell Joget to create a random unique id or a "Universally unique identifier". Example:
For JDBC SQL INSERT in a grid, use "{foreignKey}" syntax to populate the parent id into the child table foreign key value, as follows:
| ||||||||||||||||||||
SQL UPDATE Query | Use syntax like curly brackets {field_id} in query to inject submitted form data.
| ||||||||||||||||||||
SQL DELETE Query | Used in deleting SQL statement to delete form data records in Datalist/Grid element. Use syntax like curly brackets {id} in query to inject form data primary key value.
| ||||||||||||||||||||
Handling for field workflow variable? | Click the checkbox if you are using workflow variables mapping in your form elements. The JDBC binder will copy the field value to the workflow variable when you submit the form if the form is mapped to a process. Not applicable to grid elements. | ||||||||||||||||||||
Handling for uploaded files? | Click the checkbox if you are using file or image attachments in your form elements. The JDBC binder will save your file or image attachment into the ".\wflow" folder when you save the form. Select form to store uploaded files only if you are using a form grid or spreadsheet. |
Error Messages | Causes And Solutions |
---|---|
Message on screen: Record cannot be found | There is a JDBC configuration error. Check the joget.log file for more information. |
The rest of the error messages below are found in the \apache-tomcat-x.x.xx\logs\joget.log file. | |
ERROR org.joget.plugin.enterprise.JdbcLoadBinder - org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class | The property Custom JDBC Driver is incorrect |
ERROR org.joget.plugin.enterprise.JdbcLoadBinder - org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused: connect) | The property Custom JDBC URL is incorrect |
ERROR org.joget.plugin.enterprise.JdbcLoadBinder - org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not connect to address=(host=localhost)(port=3307)(type=master) : Access denied for user 'xxxx'@'localhost' (using password: YES) | The property Custom JDBC Username or Custom JDBC Password is incorrect. |
ERROR org.joget.plugin.enterprise.JdbcLoadBinder - java.sql.SQLSyntaxErrorException: ..... | The property SQL SELECT Query is incorrect. Do also check the SQL lower or upper case spelling on table and column names, especially if you are running a database on a Linux OS which is case sensitive. |
ERROR org.joget.plugin.enterprise.JdbcLoadBinder - java.sql.SQLException: Could not set parameter at position 1 (values was '?') Query - conn:506(M) - SELECT * FROM app_fd_table WHERE id = "?" | Do not enclosed the ? in single or double quotation marks. Correct syntax is: SELECT * FROM app_fd_table WHERE id = ? |
ERROR org.joget.tutorial.JdbcOptionsBinder - com.microsoft.sqlserver.jdbc.SQLServerException: |
DB error on JDBC Options with "Field ID to control available options based on Grouping". You can only pass one ? parameter in the SQL. |