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

Difference between revisions of "Scout/Concepts/Sql Service"

(SQL convenience class)
(Select into an array holder)
Line 73: Line 73:
 
{{Note|TODO|Using 2 services, more information in [http://www.eclipse.org/forums/index.php/mv/msg/369585/902322/#msg_902322 forum thread]}}
 
{{Note|TODO|Using 2 services, more information in [http://www.eclipse.org/forums/index.php/mv/msg/369585/902322/#msg_902322 forum thread]}}
  
== Select into an array holder ==
+
== Advanced binding ==
 +
 
 +
=== Solve conflicts between bindings ===
 +
{{Note|TODO|Add explanations from this [https://www.eclipse.org/forums/index.php/t/803695/ forum thread] (extended to a more common case: for example read from 2 formDatas)}}
 +
 
 +
 
 +
=== Select into an array holder ===
 
Example:
 
Example:
 
<source lang="java">
 
<source lang="java">

Revision as of 11:36, 28 August 2014

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

Back to the top