Overview
Comment: | Nicer API.
-[executeCommand:parameters:] is now a variadic function instead of |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
d2fe40f16065b5ccf5ba135af1ec95f0 |
User & Date: | js 2012-10-05 20:17:45 |
Context
2012-10-05
| ||
21:19 | Add Xcode project. check-in: cf2fe18597 user: js tags: trunk | |
20:17 | Nicer API. check-in: d2fe40f160 user: js tags: trunk | |
2012-10-04
| ||
22:18 | Exclude fields that are NULL from the result. check-in: 6d068f6ae7 user: js tags: trunk | |
Changes
Changes to PGConnection.h.
︙ | ︙ | |||
16 17 18 19 20 21 22 | - (void)setParameters: (OFDictionary*)parameters; - (OFDictionary*)parameters; - (void)connect; - (void)reset; - (PGResult*)executeCommand: (OFString*)command; - (PGResult*)executeCommand: (OFString*)command | | | 16 17 18 19 20 21 22 23 24 25 | - (void)setParameters: (OFDictionary*)parameters; - (OFDictionary*)parameters; - (void)connect; - (void)reset; - (PGResult*)executeCommand: (OFString*)command; - (PGResult*)executeCommand: (OFString*)command parameters: (id)firstParameter, ...; - (PGconn*)PG_connection; @end |
Changes to PGConnection.m.
︙ | ︙ | |||
74 75 76 77 78 79 80 | return [PGResult PG_resultWithResult: result]; PQclear(result); return nil; } - (PGResult*)executeCommand: (OFString*)command | | > > > > > > > | < < < > | | | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | return [PGResult PG_resultWithResult: result]; PQclear(result); return nil; } - (PGResult*)executeCommand: (OFString*)command parameters: (id)parameter, ... { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; PGresult *result; const char **values; va_list args, args2; size_t argsCount; va_start(args, parameter); va_copy(args2, args); for (argsCount = 1; va_arg(args2, id) != nil; argsCount++); values = [self allocMemoryWithSize: sizeof(*values) count: argsCount]; @try { size_t i = 0; do { if ([parameter isKindOfClass: [OFNull class]]) values[i++] = NULL; else values[i++] = [parameter UTF8String]; } while ((parameter = va_arg(args, id)) != nil); result = PQexecParams(conn, [command UTF8String], argsCount, NULL, values, NULL, NULL, 0); } @finally { [self freeMemory: values]; } [pool release]; if (PQresultStatus(result) == PGRES_FATAL_ERROR) { |
︙ | ︙ |
Changes to test.m.
︙ | ︙ | |||
26 27 28 29 30 31 32 | [connection executeCommand: @"CREATE TABLE test (" @" id integer," @" name varchar(255)," @" content text" @")"]; [connection executeCommand: @"INSERT INTO test (id, name, content) " @"VALUES($1, $2, $3)" | | | > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | [connection executeCommand: @"CREATE TABLE test (" @" id integer," @" name varchar(255)," @" content text" @")"]; [connection executeCommand: @"INSERT INTO test (id, name, content) " @"VALUES($1, $2, $3)" parameters: @"1", @"foo", @"Hallo Welt!", nil]; [connection executeCommand: @"INSERT INTO test (id, content) " @"VALUES($1, $2)" parameters: @"2", @"Blup!!", nil]; result = [connection executeCommand: @"SELECT * FROM test"]; of_log(@"%@", result); of_log(@"JSON: %@", [result JSONRepresentation]); result = [connection executeCommand: @"SELECT COUNT(*) FROM test"]; of_log(@"%@", result); [OFApplication terminate]; } @end |