Database

Last updated 9 months ago

Inclusion code:

Service Deployment

Port Name

Location

Protocol

Interfaces

Database

-

-

DatabaseInterface

List of Available Interfaces

DatabaseInterface

Operation Name

Input Type

Output Type

Faults

checkConnection

void

void

ConnectionError( undefined )

query

QueryRequest

QueryResult

SQLException( undefined ) ConnectionError( undefined )

executeTransaction

DatabaseTransactionRequest

DatabaseTransactionResult

SQLException( undefined ) ConnectionError( undefined )

update

UpdateRequest

int

SQLException( undefined ) ConnectionError( undefined )

close

void

void

connect

ConnectionInfo

void

InvalidDriver( 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

Type documentation: no documentation provided

Response type

Type: void

Type documentation: no documentation provided

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 documentation: no documentation provided

type QueryRequest: undefined

Response type

Type: QueryResult

Type documentation: no documentation provided

type QueryResult: void {
.row*: undefined
}

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 documentation: no documentation provided

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

Response type

Type: DatabaseTransactionResult

Type documentation: no documentation provided

type DatabaseTransactionResult: void {
.result*: TransactionQueryResult
}

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 documentation: no documentation provided

type UpdateRequest: undefined

Response type

Type: int

Type documentation: no documentation provided

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

Type documentation: no documentation provided

Response type

Type: void

Type documentation: no documentation provided

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 documentation: no documentation provided

type 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

Type documentation: no documentation provided

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 */ )