Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Scout/Concepts/Sql Service

< Scout‎ | Concepts
Revision as of 11:36, 28 August 2014 by Jeremie.bresson.unblu.com (Talk | contribs) (Select into an array holder)

The Scout documentation has been moved to https://eclipsescout.github.io/.

The SqlService provides access to a database.

Description

Note.png
TODO
Add a description


Minimal configuration

To be able to connect to a database, these properties needs to be configured:


Delegation of the configuration to config.ini

If the Property The Scout documentation has been moved to https://eclipsescout.github.io/. is set (using the The Scout documentation has been moved to https://eclipsescout.github.io/.), 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 The Scout documentation has been moved to https://eclipsescout.github.io/. 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 The Scout documentation has been moved to https://eclipsescout.github.io/.

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: The Scout documentation has been moved to https://eclipsescout.github.io/.

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

Note.png
TODO
Using 2 services, more information in forum thread


Advanced binding

Solve conflicts between bindings

Note.png
TODO
Add explanations from this forum thread (extended to a more common case: for example read from 2 formDatas)


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));
Note.png
TODO
Add explanations from this forum thread


See also

Copyright © Eclipse Foundation, Inc. All Rights Reserved.