Scout/Concepts/Sql Service
Scout |
Wiki Home |
Website |
Download • Git |
Community |
Forums • Blog • Twitter • G+ |
Bugzilla |
Bugzilla |
The SqlService provides access to a database.
Contents
Description
Minimal configuration
To be able to connect to a database, these properties needs to be configured:
- JdbcDriverName the qualified name of the JDBC driver.
- JdbcMappingName the JDBC path
"jdbc:..."
. - Username the user name to connect to the database.
- Password the password to connect to the database.
- SqlStyle provides the class of the Sql Style that should be used.
Delegation of the configuration to config.ini
If the Property JdbcMappingName is set (using the Object Properties View), the Java code looks like this:
package myapp.server.services.common.sql; import org.eclipse.scout.rt.services.common.jdbc.AbstractSqlService; import org.eclipse.scout.service.IService; public class MySqlService extends AbstractSqlService implements IService { @Override protected String getConfiguredJdbcMappingName() { return "jdbc:derby:C:/MyDB"; } // + other configurations... }
The path to the database is hard coded in the code. You might want to delegate this configuration to the config.ini
to have more flexibility (e.g one path for development and one path for production). Because the AbstractSqlService
also provides a setter for this property setJdbcMappingName(String)
, it is possible to set the property with the config.ini
file:
<qualified name of the class>#<setter name without set prefix>=<value>
This pattern works in Eclipse Scout for all classes extending the AbstractService
For this example:
myapp.server.services.common.sql.MySqlService#JdbcMappingName=jdbc:derby:C:/MyDB
SQL convenience class
Scout proposes a convenience singleton class to access the default SqlService: SQL
Here a simple select statement:
Object[][] s = SQL.select("" + "SELECT COMPANY_NR," + " SHORT_NAME," + " NAME" + " FROM COMPANY");
This update example uses binds. The data are read from the formData variable. ":firstName"
will access the value in formData.getFirstName()
or formData.getFirstName().getValue()
SQL.update( " update actor " + " set first_name = :firstName," + " last_name = :lastName " + " where actor_id = :id ", formData );
Multiple SQL Services
Advanced binding
Solve conflicts between bindings
Select into an array holder
Example:
BeanArrayHolder<AnswerBean> holder = new BeanArrayHolder<AnswerBean>(AnswerBean.class); SQL.selectInto(" select question_id, name, answer_id " + " from answers " + " into :{list.questionNr}, :{list.yourName}, :{list.answerNr}", new NVPair("list", holder));