ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
210
210
EMPFEHLEN
-
04.10.11 15:34 #1
Hallo leute,
Ich suche jetzt schon den ganzen Tag, also kommt mir bitte nicht mit so einem Kram
Ich möchte gerne mit C und unixODBC treibern auf eine Oracle DB connecten und queries absetzen. Alles kein Problem - so lange es sich um keine Queries handelt, bei denen Date oder Timestamp zum einsatz kommt. Sobald ich nach einträgen ab einem Gewissen Datum selecten will, findet der gar nix mehr.
Habe bereits versucht die vergleichswerte für die Felder per String mitzugeben, das ganze über SQLPrepareStmt als SQL_TIMESTAMP bzw SQL_DATE zu binden... jedoch alles ohne Erfolg.
Hoffe ihr könnt mir da weiterhelfen.
Gruß
ChristophAll we have to decide is what to do with the time that is given to us.
Gruß Chris
-
04.10.11 16:25 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Laut http://msdn.microsoft.com/en-us/libr...v=sql.90).aspx
Haben Date/Time Literale folgende Form:
GrußCode :1 2 3 4 5 6 7 8 9 10
{ literal_type 'constant_value' } literal_type Specifies the type of the escape sequence. Timestamps have three literal_type specifiers: d = date only t = time only ts = timestamp (time + date)If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
04.10.11 16:54 #3
Servus Meister,
erstmal Danke für die Antwort, hab das ganze soeben ausprobiert:
Code :1 2
snprintf(sql, sizeof(sql), "SELECT roomNo, userPass, adminPass, adminFlags, userFlags, bookId, is_locked, running_on_server FROM booking WHERE roomNo = '?' AND startTime <= { ts '?' } AND endTime >= { ts '?' } for update;"); stmt = ast_odbc_prepare_and_execute(obj, generic_prepare, &gps);
die Parameter sind wie folgt definiert:
Code :1
char *argv[] = { userIn->roomNo, "2011-10-04 01:23:56.123", "2011-10-04 01:23:56.123" };
des weiteren werden die Parameter als SQL_CHAR gebunden:
Code :1
SQLBindParameter(stmt, i + 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(gps->argv[i]), 0, gps->argv[i], 0, NULL);
Das ganze basiert auf unixODBC (weiß jetzt nicht ob das einen Unterschied macht, vermutlich schon)
jedenfalls bekomme ich als output:
noch ne Idee?[Oct 4 16:49:35] WARNING[16454] res_odbc.c: SQL Execute returned an error -1: 42S22: [Oracle][ODBC][Ora]ORA-00904: "TS": invalid identifier
(110)
lgAll we have to decide is what to do with the time that is given to us.
Gruß Chris
-
05.10.11 12:17 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Versuch's mal so:
GrußCode c:1 2 3 4 5 6 7
SQLCHAR sql_stmt[] = "select * from log where timestamp <= ?"; char date[] = "2011-10-05 09:59:45"; SQLLEN date_sz = SQL_NTS; ret = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_TYPE_TIMESTAMP, 23, 0, date, 0, &date_sz);
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
06.10.11 13:36 #5
Jo, so hats hingehaun, dank dir

PS: achtet nebenbei immer drauf wie groß ihr eure buffer wählt
hab grad einige Std damit verschissen
All we have to decide is what to do with the time that is given to us.
Gruß Chris
Ähnliche Themen
-
SQL/Oracle date/time -> suche Date
Von Goldman im Forum .NET CaféAntworten: 0Letzter Beitrag: 20.05.09, 15:28 -
[Oracle 8i] An Oracle 8i über Vb und ODBC anmelden/DB bearbeiten
Von Animal21 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 02.06.08, 11:00 -
MS SQL Server -> ODBC -> Oracle
Von Don_Pazo im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 16.03.08, 18:37 -
ODBC (Oracle light auf PDA)
Von MWA im Forum C/C++Antworten: 0Letzter Beitrag: 01.08.03, 11:50 -
ODBC (Oracle light auf PDA)
Von MWA im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 01.08.03, 11:49





Zitieren
Login






