22 #ifndef DBALLE_DB_INTERNALS_H
23 #define DBALLE_DB_INTERNALS_H
34 #include <wreport/error.h>
41 #define DBA_USE_TRANSACTIONS
56 #define TRACE(...) fprintf(stderr, __VA_ARGS__)
57 #define IFTRACE if (1)
60 #define TRACE(...) do { } while (0)
62 #define IFTRACE if (0)
82 error_odbc(SQLSMALLINT handleType, SQLHANDLE handle,
const std::string& msg);
85 wreport::ErrorCode code()
const throw () {
return wreport::WR_ERR_ODBC; }
87 virtual const char* what()
const throw () {
return msg.c_str(); }
89 static void throwf(SQLSMALLINT handleType, SQLHANDLE handle,
const char* fmt, ...) WREPORT_THROWF_ATTRS(3, 4);
132 void connect(
const char* dsn,
const char* user,
const char* password);
133 void driver_connect(
const char* config);
134 std::string driver_name();
135 void set_autocommit(
bool val);
144 void init_after_connect();
161 void commit() { conn.
commit(); fired =
true; }
162 void rollback() { conn.
rollback(); fired =
true; }
172 #ifdef DEBUG_WARN_OPEN_TRANSACTIONS
174 std::string debug_query;
175 bool debug_reached_completion;
181 void bind_in(
int idx,
const DBALLE_SQL_C_SINT_TYPE& val);
182 void bind_in(
int idx,
const DBALLE_SQL_C_SINT_TYPE& val,
const SQLLEN& ind);
183 void bind_in(
int idx,
const DBALLE_SQL_C_UINT_TYPE& val);
184 void bind_in(
int idx,
const DBALLE_SQL_C_UINT_TYPE& val,
const SQLLEN& ind);
185 void bind_in(
int idx,
const unsigned short& val);
186 void bind_in(
int idx,
const char* val);
187 void bind_in(
int idx,
const char* val,
const SQLLEN& ind);
188 void bind_in(
int idx,
const SQL_TIMESTAMP_STRUCT& val);
190 void bind_out(
int idx, DBALLE_SQL_C_SINT_TYPE& val);
191 void bind_out(
int idx, DBALLE_SQL_C_SINT_TYPE& val, SQLLEN& ind);
192 void bind_out(
int idx, DBALLE_SQL_C_UINT_TYPE& val);
193 void bind_out(
int idx, DBALLE_SQL_C_UINT_TYPE& val, SQLLEN& ind);
194 void bind_out(
int idx,
unsigned short& val);
195 void bind_out(
int idx,
char* val, SQLLEN buflen);
196 void bind_out(
int idx,
char* val, SQLLEN buflen, SQLLEN& ind);
197 void bind_out(
int idx, SQL_TIMESTAMP_STRUCT& val);
199 void prepare(
const char* query);
200 void prepare(
const char* query,
int qlen);
222 bool fetch_expecting_one();
226 void set_cursor_forward_only();
229 bool error_is_ignored();
230 bool is_error(
int sqlres);
241 DBALLE_SQL_C_SINT_TYPE out;
247 const DBALLE_SQL_C_SINT_TYPE&
read();
256 const char* default_repinfo_file();