Changeset 15 for trunk/samples

Show
Ignore:
Timestamp:
09/20/04 19:49:36 (8 years ago)
Author:
toaster
Message:

documentation changes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/samples/Makefile

    r14 r15  
    55    cd .. && c:\dm\bin\make winsamples 
    66     
    7 test: test5 
     7test: test4 
    88 
    99test0: 
  • trunk/samples/test3.d

    r14 r15  
     1 
     2 
     3private import std.string; 
     4private import std.stdio; 
    15 
    26import sdbo.odbc; 
    37 
    4 int main(char[][] args
     8void main(
    59{ 
    6  
    7       
    8     OdbcEnvironment env = new OdbcEnvironment; 
    910     
    1011    version(Windows) { 
     
    1415        char[] constr = "DRIVER=/usr/lib/libmyodbc3.so;HOST=localhost;USER=root"; 
    1516    }  
    16      
     17 
     18    OdbcEnvironment env = new OdbcEnvironment; 
    1719    OdbcConnection c = env.connectDriver(constr); 
    1820     
    19     SqlResult r = c.newResult(); 
    20     r = c.newResult(); 
    21     r = c.newResult(); 
    22      
    23     delete r; /* two result objects remain undeleted */ 
    24     delete c; /* this deletes ALL objects derived from c (and frees all handles in the right sequence) */ 
     21    createTestTable(c, "create table TestCount (  
     22                                counter_id int,  
     23                                counter_label varchar(50), 
     24                                counter_date date )" 
     25                        ); 
    2526     
    2627     
    27     c = env.newConnection();  
    28     c = env.newConnection(); /* lost reference to former object */ 
     28    SqlResult result = c.newResult(); 
    2929     
    30     delete env; /* this deletes ALL objects derived from env (and frees all handles in the right sequence) */ 
     30    /* Inserting values with a prepared statement  
     31     * 
     32     * This will store the same data as  
     33     * 
     34     * result.execDirect("insert into TestCount values(10, 'ID set to 10', '2010-10-20')") 
     35     * result.execDirect("insert into TestCount values(20, 'ID set to 20', '2020-10-20')") 
     36     * result.execDirect("insert into TestCount values(30, 'ID set to 30', '2030-10-20')") 
     37     * 
     38     * but execution time gets much better when using prepared statements. 
     39     * 
     40     */ 
    3141     
    32     //c.connect("foo"); /* access violation */ 
     42    result.prepare("insert into TestCount values(?, ?, ?)"); 
    3343     
    34     /* at this point, all created objects are deleted */ 
     44    for(int i=1; i < 10; i++) { 
     45         
     46        result.setInput(0, 10 * i);  
     47        result.setInput(1, "ID set to " ~ toString(10 * i)); 
     48        result.setInput(2, "20" ~ toString(10 * i) ~ "-10-20"); 
     49         
     50        result.execute(); 
     51         
     52    } 
    3553     
    36     (new OdbcEnvironment).connectDriver(constr) 
    37         .newResult(); 
    38     /* 3 objects created */ 
     54    result.setInput(0, 990);  
     55    result.setInput(1, "something different"); 
     56    result.setInput(2, "1999-3-4"); 
     57     
     58    result.execute(); 
     59     
     60    result.setInput(0, 991);  
     61    result.setInput(1, "more than 50 characters  
     62                        more than 50 characters  
     63                        more than 50 characters  
     64                        more than 50 characters"); 
     65    result.setInput(2, "1999-3-4"); 
     66     
     67    /* column 2 will be truncated but the insert goes */ 
     68    result.execute(); 
     69     
     70         
     71    result.execDirect("select * from TestCount order by counter_id"); 
     72    result.setBinding(result.D_CHAR); 
     73     
     74    while(result.fetch) { 
     75        writef("Fetch: "); 
     76        foreach(char[] column; result.columns()) 
     77            printf("%s = %s; ", toStringz(column), result.stringz(column)); 
     78        writefln(); 
     79    } 
    3980     
    4081     
    41     /* the 3 objects and their handles will be deleted on exit or garbage collection */ 
     82    delete env; 
    4283     
    43     /* this function does nothing and returns silently */ 
    44     return 0; 
    4584} 
     85 
     86void createTestTable(DBCon c, char[]createtable) 
     87{ 
     88     
     89    SqlResult result = c.newResult(); 
     90     
     91    version(linux) { 
     92        result.execDirect("create database if not exists _sdbo_teste"); 
     93        result.execDirect("use _sdbo_teste;"); 
     94    } 
     95     
     96    try { 
     97        result = c.execDirect(createtable); 
     98    } catch(SqlException e) { 
     99         
     100        if(e.sqlState == "42S01") { 
     101            result = c.execDirect("drop table TestCount"); 
     102            result.execDirect(createtable); 
     103        } else { 
     104             
     105            writefln("Can't recover. Giving up..."); 
     106            writefln("Create a database test1.mdb in this directory if it doesn't exist."); 
     107            c.environment.free(); 
     108            throw e; 
     109        } 
     110    } 
     111     
     112    delete result; 
     113} 
  • trunk/samples/test4.d

    r14 r15  
    1  
    2  
    3 private import std.string; 
    4 private import std.stdio; 
    51 
    62import sdbo.odbc; 
    73 
    8 void main(
     4int main(char[][] args
    95{ 
     6 
     7      
     8    OdbcEnvironment env = new OdbcEnvironment; 
    109     
    1110    version(Windows) { 
     
    1615    }  
    1716     
    18  
    19     OdbcEnvironment env = new OdbcEnvironment; 
    2017    OdbcConnection c = env.connectDriver(constr); 
    21     SqlResult result; 
    2218     
    23     char[] createtable = "create table TestCount ( counter_id int, counter_label varchar(50), counter_date date )"; 
     19    SqlResult r = c.newResult(); 
     20    r = c.newResult(); 
     21    r = c.newResult(); 
     22     
     23    delete r; /* two result objects remain undeleted */ 
     24    delete c; /* this deletes ALL objects derived from c (and frees all handles in the right sequence) */ 
    2425     
    2526     
    26     version(linux) { 
    27         c.execDirect("create database if not exists _sdbo_teste"); 
    28         c.execDirect("use _sdbo_teste;"); 
    29     } 
     27    c = env.newConnection();  
     28    c = env.newConnection(); /* lost reference to former object */ 
    3029     
    31  
    32     try { 
    33         result = c.execDirect(createtable); 
    34     } catch(SqlException e) { 
    35          
    36         if(e.sqlState == "42S01") { 
    37             result = c.execDirect("drop table TestCount"); 
    38             result.execDirect(createtable); 
    39         } else { 
    40              
    41             writefln(e.toString()); 
    42             writefln("Can't recover. Giving up..."); 
    43             writefln("Create a database test1.mdb in this directory if it doesn't exist."); 
    44             delete env; 
    45             return; 
    46         } 
    47     } 
    48          
     30    delete env; /* this deletes ALL objects derived from env (and frees all handles in the right sequence) */ 
    4931     
    50     version(Windows) { 
    51         result.execDirect("insert into TestCount values (10, 'counter id is 10', date())"); 
    52         result.execDirect("insert into TestCount values (20, 'counter id is 20', date())"); 
    53         result.execDirect("insert into TestCount values (30, 'counter id is 30', date())"); 
    54     } else { 
    55         result.execDirect("insert into TestCount values (10, 'counter id is 10', now())"); 
    56         result.execDirect("insert into TestCount values (20, 'counter id is 20', now())"); 
    57         result.execDirect("insert into TestCount values (30, 'counter id is 30', now())"); 
    58     } 
    59          
    60     result.execDirect("select * from TestCount order by counter_id"); 
     32    //c.connect("foo"); /* access violation */ 
    6133     
    62     result.fetch(); 
     34    /* at this point, all created objects are deleted */ 
    6335     
    64     wchar[][char[]] values1 = result.wstringsN(); 
    65     writefln("result has %d wchar columns", values1.length); 
    66     foreach(char[] field; values1.keys) { 
    67         writefln("wchar field %s: %w", field, values1[field]); 
    68     } 
     36    (new OdbcEnvironment).connectDriver(constr) 
     37        .newResult(); 
     38    /* 3 objects created */ 
    6939     
    70     long[char[]] values2 = result.vlongsN(); 
    71     writefln("result has %d long columns", values2.length); 
    72     foreach(char[] field; values2.keys) 
    73         writefln("long field %s: %d", field, values2[field]); 
    7440     
    75     int[char[]] values3 = result.vintsN(); 
    76     writefln("result has %d int columns", values3.length); 
    77     foreach(char[] field; values3.keys) 
    78         writefln("int field %s: %d", field, values3[field]); 
     41    /* the 3 objects and their handles will be deleted on exit or garbage collection */ 
    7942     
    80     char[][int] values4 = result.strings(); 
    81     writefln("result has %d char columns", values4.length); 
    82     foreach(int col; values4.keys) 
    83         writefln("char column %d: %s", col, values4[col]); 
    84      
    85     delete env; 
    86      
     43    /* this function does nothing and returns silently */ 
     44    return 0; 
    8745}