Database

Inclusion code:

Service Deployment
Port NameLocationProtocolInterfaces
Database documentation:
Database--DatabaseInterface

List of Available Interfaces

DatabaseInterface

Interface documentation:

Operation NameInput TypeOutput TypeFaults
checkConnectionvoidvoidConnectionError( undefined )
queryQueryRequestQueryResultSQLException( undefined ) ConnectionError( undefined )
executeTransactionDatabaseTransactionRequestDatabaseTransactionResultSQLException( undefined ) ConnectionError( undefined )
updateUpdateRequestintSQLException( undefined ) ConnectionError( undefined )
closevoidvoid
connectConnectionInfovoidInvalidDriver( undefined ) ConnectionError( undefined ) DriverClassNotFound( undefined )

Operation Description

checkConnection

Operation documentation: Checks the connection with the database. Throws ConnectionError if the connection is not functioning properly.

Invocation template:

checkConnection@Database( request )( response )

Request type

Type: void

void : void

Response type

Type: void

void : void

Possible faults thrown

Fault ConnectionError with type undefined

Fault-handling install template:

install ( ConnectionError => /* error-handling code */ )

query

Operation documentation: Queries the database and returns a result set

  Example with SQL parameters:
  queryRequest =
      "SELECT city, country, data FROM weather " +
      "WHERE city=:city AND country=:country";
  queryRequest.city = City;
  queryRequest.country = Country;
  query@Database( queryRequest )( queryResponse );

  _template:
  Field _template allows for the definition of a specific output template.
  Assume, e.g., to have a table with the following columns:
  | col1 | col2 | col3 | col4 |
  If _template is not used the output will be rows with the following format:
  row
   |-col1
   |-col2
   |-col3
   |-col4
  Now let us suppose we would like to have the following structure for each row:
  row
    |-mycol1            contains content of col1
        |-mycol2        contains content of col2
       |-mycol3        contains content of col3
    |-mycol4            contains content of col4

  In order to achieve this, we can use field _template as it follows:
    with( query_request._template ) {
      .mycol1 = "col1";
      .mycol1.mycol2 = "col2";
      .mycol1.mycol2.mycol3 = "col3";
      .mycol4 = "col4"
    }
  _template does not currently support vectors.

Invocation template:

query@Database( request )( response )

Request type

Type: QueryRequest

type QueryRequest: undefined

QueryRequest : string

Response type

Type: QueryResult

type QueryResult: void {
    .row*: undefined
}

QueryResult : void

  • row : void

Possible faults thrown

Fault SQLException with type undefined

Fault-handling install template:

install ( SQLException => /* error-handling code */ )

Fault ConnectionError with type undefined

Fault-handling install template:

install ( ConnectionError => /* error-handling code */ )

executeTransaction

Operation documentation: Executes more than one database command in a single transaction

Invocation template:

executeTransaction@Database( request )( response )

Request type

Type: DatabaseTransactionRequest

type DatabaseTransactionRequest: void {
    .statement[1,2147483647]: undefined
}

DatabaseTransactionRequest : void

  • statement : string

Response type

Type: DatabaseTransactionResult

type DatabaseTransactionResult: void {
    .result*: TransactionQueryResult
}

DatabaseTransactionResult : void

  • result : int

Possible faults thrown

Fault SQLException with type undefined

Fault-handling install template:

install ( SQLException => /* error-handling code */ )

Fault ConnectionError with type undefined

Fault-handling install template:

install ( ConnectionError => /* error-handling code */ )

update

Operation documentation: Updates the database and returns a single status code

  Example with SQL parameters:
  updateRequest =
      "INSERT INTO weather(city, country, data) " +
      "VALUES (:city, :country, :data)";
  updateRequest.city = City;
  updateRequest.country = Country;
  updateRequest.data = r;
  update@Database( updateRequest )( ret )

Invocation template:

update@Database( request )( response )

Request type

Type: UpdateRequest

type UpdateRequest: undefined

UpdateRequest : string

Response type

Type: int

int : int

Possible faults thrown

Fault SQLException with type undefined

Fault-handling install template:

install ( SQLException => /* error-handling code */ )

Fault ConnectionError with type undefined

Fault-handling install template:

install ( ConnectionError => /* error-handling code */ )

close

Operation documentation: Explicitly closes a database connection Per default the close happens on reconnect or on termination of the Database service, eg. when the enclosing program finishes.

Invocation template:

close@Database( request )( response )

Request type

Type: void

void : void

Response type

Type: void

void : void

connect

Operation documentation: Connects to a database and eventually closes a previous connection

  Example with HSQLDB:
  with ( connectionInfo ) {
      .username = "sa";
      .password = "";
      .host = "";
      .database = "file:weatherdb/weatherdb"; // "." for memory-only
      .driver = "hsqldb_embedded"
  };
  connect@Database( connectionInfo )( void );

Invocation template:

connect@Database( request )( response )

Request type

Type: ConnectionInfo

type ConnectionInfo: void {
    .database: string
    .password: string
    .checkConnection?: int
    .driver: string
    .port?: int
    .toLowerCase?: bool
    .host: string
    .toUpperCase?: bool
    .attributes?: string
    .username: string
}

ConnectionInfo : void

  • database : string
  • password : string
  • checkConnection : int
  • driver : string
  • port : int
  • toLowerCase : bool
  • host : string
  • toUpperCase : bool
  • attributes : string
  • username : string

Response type

Type: void

void : void

Possible faults thrown

Fault InvalidDriver with type undefined

Fault-handling install template:

install ( InvalidDriver => /* error-handling code */ )

Fault ConnectionError with type undefined

Fault-handling install template:

install ( ConnectionError => /* error-handling code */ )

Fault DriverClassNotFound with type undefined

Fault-handling install template:

install ( DriverClassNotFound => /* error-handling code */ )

Subtypes

TransactionQueryResult

type TransactionQueryResult: int { .row*: undefined }