Changeset 15 for trunk/samples
- Timestamp:
- 09/20/04 19:49:36 (8 years ago)
- Files:
-
- trunk/samples/Makefile (modified) (1 diff)
- trunk/samples/test3.d (modified) (2 diffs)
- trunk/samples/test4.d (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/samples/Makefile
r14 r15 5 5 cd .. && c:\dm\bin\make winsamples 6 6 7 test: test 57 test: test4 8 8 9 9 test0: trunk/samples/test3.d
r14 r15 1 2 3 private import std.string; 4 private import std.stdio; 1 5 2 6 import sdbo.odbc; 3 7 4 int main(char[][] args)8 void main() 5 9 { 6 7 8 OdbcEnvironment env = new OdbcEnvironment;9 10 10 11 version(Windows) { … … 14 15 char[] constr = "DRIVER=/usr/lib/libmyodbc3.so;HOST=localhost;USER=root"; 15 16 } 16 17 18 OdbcEnvironment env = new OdbcEnvironment; 17 19 OdbcConnection c = env.connectDriver(constr); 18 20 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 ); 25 26 26 27 27 c = env.newConnection(); 28 c = env.newConnection(); /* lost reference to former object */ 28 SqlResult result = c.newResult(); 29 29 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 */ 31 41 32 //c.connect("foo"); /* access violation */42 result.prepare("insert into TestCount values(?, ?, ?)"); 33 43 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 } 35 53 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 } 39 80 40 81 41 /* the 3 objects and their handles will be deleted on exit or garbage collection */82 delete env; 42 83 43 /* this function does nothing and returns silently */44 return 0;45 84 } 85 86 void 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;5 1 6 2 import sdbo.odbc; 7 3 8 void main()4 int main(char[][] args) 9 5 { 6 7 8 OdbcEnvironment env = new OdbcEnvironment; 10 9 11 10 version(Windows) { … … 16 15 } 17 16 18 19 OdbcEnvironment env = new OdbcEnvironment;20 17 OdbcConnection c = env.connectDriver(constr); 21 SqlResult result;22 18 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) */ 24 25 25 26 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 */ 30 29 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) */ 49 31 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 */ 61 33 62 result.fetch();34 /* at this point, all created objects are deleted */ 63 35 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 */ 69 39 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]);74 40 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 */ 79 42 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; 87 45 }
