From 2b2bb8f513262785c200e3c945e7d9dcc35be9da Mon Sep 17 00:00:00 2001 From: halw Date: Sun, 7 Dec 2008 17:38:05 +0000 Subject: [PATCH] Author:halw Date:2008-12-07T17:38:05.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@127 abb3cda0-5349-4a8f-a601-0c33ac3a8c38 --- ...tween-ise-eiffel-62-and-ise-eiffel-63.wiki | 1 + .../data-modification.wiki | 22 ++-- .../database-selection.wiki | 13 +- .../selection-access.wiki | 119 ++++++++++-------- 4 files changed, 88 insertions(+), 67 deletions(-) diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-62-and-ise-eiffel-63.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-62-and-ise-eiffel-63.wiki index 0e0bd109..aa3153a0 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-62-and-ise-eiffel-63.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-62-and-ise-eiffel-63.wiki @@ -19,6 +19,7 @@ * Fixed missing detection of VREG and VRFT errors for labels of a named tuples which is used as an actual generic parameter of a type (fixes eweasel test#tuple012 and test#tuple013), thus some of your code might be broken since the compiler failed to check this before. * Fixed eweasel test#valid222 where compiler properly detects VDRS-4 errors when you redefine a repeatedly inherited routine in at least one but not all branches, but fail to provide a local definition. * Now a formal generic parameter only conforms to a formal generic parameter, that is to say assignment to a formal generic parameter where the source is of type NONE (i.e Void) will now be rejected by the compiler. +* Dropped support for older Microsoft C/C++ compilers on Windows platforms. We only support VS 2005 or greater. ==Bug fixes== diff --git a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-modification.wiki b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-modification.wiki index b090712d..548772d1 100644 --- a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-modification.wiki +++ b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-modification.wiki @@ -8,19 +8,23 @@ Use the [[ref:/libraries/store/reference/db_change_flatshort|DB_CHANGE]] class [[ref:/libraries/store/reference/db_change_flatshort|DB_CHANGE]] allows you to modify the database data using the SQL language: * Prepare your SQL query and use modify: - modification: DB_CHANGE - -- Modification tool. - ... - create modification.make - modification.modify ("Update CONTACTS set Firstname = ' John'") + modification: DB_CHANGE + -- Modification tool. + + ... + + create modification.make + modification.modify ("Update CONTACTS set Firstname = ' John'") * Commit your changes with your session control: - session_control: DB_CONTROL - -- Session control. - ... - session_control.commit + session_control: DB_CONTROL + -- Session control. + + ... + + session_control.commit {{tip|It is always better to check the database status for errors before committing changes. }} diff --git a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-selection.wiki b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-selection.wiki index f2c2e99e..227c9000 100644 --- a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-selection.wiki +++ b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-selection.wiki @@ -8,11 +8,14 @@ Use the [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] enables your application to get database content using SQL 'select' queries: * You can carry out 'select' queries in an intuitive way using directly the SQL language: - selection: DB_SELECTION - ... - create selection.make - selection.set_query ("select * from CONTACTS where firstname = 'John'") - selection.execute + selection: DB_SELECTION + -- Selection tool + + ... + + create selection.make + selection.set_query ("select * from CONTACTS where firstname = 'John'") + selection.execute {{tip|Always check the database status for errors after your 'select' query. }} diff --git a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/selection-access.wiki b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/selection-access.wiki index 9bbf083b..d602bb30 100644 --- a/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/selection-access.wiki +++ b/documentation/current/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/selection-access.wiki @@ -15,31 +15,36 @@ To use DB_RESULT, process in 2 steps: [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] class provides different ways to customize result loading: * You want to access an '''unique''' row: [[ref:/libraries/store/reference/db_result_flatshort|DB_RESULT]] object is accessible via cursor: - selection: DB_SELECTION - my_result: DB_RESULT - ... - selection.query ("...") - if selection.is_ok then - selection.load_result - my_result := selection.cursor - end + selection: DB_SELECTION + my_result: DB_RESULT + + ... + + selection.query ("...") + if selection.is_ok then + selection.load_result + my_result := selection.cursor + end * You want to load a '''complete list''' of rows: [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] can store [[ref:/libraries/store/reference/db_result_flatshort|DB_RESULT]] objects in a list. To do this, you have mainly to provide a LIST object to DB_SELECTION with set_container: - selection: DB_SELECTION - container: ARRAYED_LIST [DB_RESULT] - create container.make (Max_results) - ... - selection.set_container (container) - ... - from - container.start - until - container.after - loop - ... - end + selection: DB_SELECTION + container: ARRAYED_LIST [DB_RESULT] + + ... + + create container.make (Max_results) + ... + selection.set_container (container) + ... + from + container.start + until + container.after + loop + ... + end {{tip|Provide [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] with the LIST structure convenient for what you need to do with the results. }} @@ -47,34 +52,40 @@ To use DB_RESULT, process in 2 steps: * You want to '''select part''' of the result set: you can set an action in [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] that will be executed each time a row is loaded. This action can for instance manipulate current row and define a stop condition. ** You need to define a descendant of class ACTION and set it to [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] : - class - MY_ACTION - inherit - ACTION - redefine - execute, found - end +class + MY_ACTION +inherit + ACTION + redefine + execute, found + end + ... - execute - do - i := i + 1 - end - ... - found: BOOLEAN - do - Result := i >= Max_result - end + + execute + do + i := i + 1 + end + + ... + + found: BOOLEAN + do + Result := i >= Max_result + end ** Then set action to [[ref:/libraries/store/reference/db_selection_flatshort|DB_SELECTION]] : - selection: DB_SELECTION - action: MY_ACTION - ... - selection.set_action (action) - selection.query ("...") - if selection.is_ok then - selection.load_result - end + selection: DB_SELECTION + action: MY_ACTION + + ... + + selection.set_action (action) + selection.query ("...") + if selection.is_ok then + selection.load_result + end @@ -83,14 +94,16 @@ To use DB_RESULT, process in 2 steps: A DB_RESULT object merely carries data retrieved from the database. You have to convert it to a DB_TUPLE to access data within the retrieved row conveniently, i.e. mostly the column values: - selection: DB_SELECTION - tuple: DB_TUPLE - ... - create tuple - tuple.copy (selection.cursor) - if tuple.count >= 2 and then tuple.column_name (2).is_equal ("Firstname") then - io.putstring (tuple.item (2).out) - end + selection: DB_SELECTION + tuple: DB_TUPLE + + ... + + create tuple + tuple.copy (selection.cursor) + if tuple.count >= 2 and then tuple.column_name (2).is_equal ("Firstname") then + io.putstring (tuple.item (2).out) + end