本文整理汇总了C++中dbbind函数的典型用法代码示例。如果您正苦于以下问题:C++ dbbind函数的具体用法?C++ dbbind怎么用?C++ dbbind使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dbbind函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: while
void Query::bind_variables()
{
int iterator = 1;
vector<field>::iterator iter_f = v_fields.begin();
while(iter_f!= v_fields.end()){
#ifdef MSSQL
if (iter_f->type == field::TYPE_INT){
// iter_f->data = (int *)malloc(sizeof(int));
dbbind(this->connector->conn_ptr, iterator, INTBIND, 0, (BYTE *) iter_f->data);
} else if (iter_f->type == field::TYPE_STRING) {
// iter_f->data = malloc(iter_f->size *sizeof(char));
// memset( iter_f->data,'\0',iter_f->size);
dbbind(this->connector->conn_ptr, iterator, STRINGBIND,0,(BYTE *) iter_f->data);
}
#endif
//#ifdef WATCHLIST_MYSQL
//// iter_f->data = malloc(iter_f->size *sizeof(char));
//// memset( iter_f->data,'\0',iter_f->size);
//#endif
iterator++;
iter_f++;
}
}
开发者ID:20083017,项目名称:mysql_connector,代码行数:25,代码来源:Query.cpp
示例2: pp_add_inactive_pkg
int pp_add_inactive_pkg (int pkg_id, int *pkg_inst_id, int *pkg_inst_id_serv, char *start_date)
{
int track_id;
int serv_id;
int status;
int ret_code;
dbfcmd(dbproc1, "exec pp_insert_inactive_pkg @account_no = %d,",gaccount_no);
dbfcmd(dbproc1, " @pkg_id = %d, ", pkg_id);
dbfcmd(dbproc1, " @active_dt = '%s' ", start_date);
if(safe_dbexec(dbproc1,"INSERT_PKG", "insert_pkg"))
return(FAILURE);
while ((status = safe_dbresults (dbproc1, "INSERT_PKG", "insert_pkg")) != NO_MORE_RESULTS)
{
if (status == FAIL) return(FAILURE);
dbbind (dbproc1, 1, INTBIND, 0, &track_id);
dbbind (dbproc1, 2, INTBIND, 0, &serv_id);
while ((ret_code = dbnextrow(dbproc1)) != NO_MORE_ROWS)
{
if(ret_code == FAIL) return(FAILURE);
/* process results */
*pkg_inst_id = track_id;
*pkg_inst_id_serv = serv_id;
}
}
return (SUCCESS);
}
开发者ID:huilang22,项目名称:Projects,代码行数:33,代码来源:product_pkgs_callbacks.c
示例3: select_rows
static int
select_rows(DBPROCESS * dbproc, int bind_type)
{
char teststr[1024];
char teststr2[1024];
char testvstr[1024];
DBINT testint;
DBINT i;
printf("select\n");
sql_cmd(dbproc);
dbsqlexec(dbproc);
if (dbresults(dbproc) != SUCCEED) {
failed = 1;
printf("Was expecting a result set.");
exit(1);
}
for (i = 1; i <= dbnumcols(dbproc); i++) {
printf("col %d is %s\n", i, dbcolname(dbproc, i));
}
if (SUCCEED != dbbind(dbproc, 1, INTBIND, 0, (BYTE *) & testint)) {
fprintf(stderr, "Had problem with bind\n");
return 1;
}
if (SUCCEED != dbbind(dbproc, 2, bind_type, 0, (BYTE *) teststr)) {
fprintf(stderr, "Had problem with bind\n");
return 1;
}
if (SUCCEED != dbbind(dbproc, 3, bind_type, 0, (BYTE *) teststr2)) {
fprintf(stderr, "Had problem with bind\n");
return 1;
}
if (SUCCEED != dbbind(dbproc, 4, bind_type, 0, (BYTE *) testvstr)) {
fprintf(stderr, "Had problem with bind\n");
return 1;
}
i = 0;
while (dbnextrow(dbproc) == REG_ROW) {
i++;
if (testint != i) {
printf("Failed. Expected i to be |%d|, was |%d|\n", testint, i);
return 1;
}
printf("c: %s$\n", teststr);
printf("c2: %s$\n", teststr2);
printf("vc: %s$\n", testvstr);
if (bind_type == STRINGBIND) {
} else {
}
}
return 0;
}
开发者ID:FreeTDS,项目名称:freetds,代码行数:58,代码来源:t0011.c
示例4: eft_get_status_codes
void eft_get_status_codes()
{
int db_code;
char description[81];
RETCODE ret_code;
/* this gets called once and hangs around forever */
description[0] = '\0';
db_code = 0;
eft_num_display_statuses = 0;
if(eft_sel_shell == NULL)
create_eft_sel_shell(eft_shell);
dbcmd(dbeftproc,"select integer_value,display_value from GUI_INDICATOR_VALUES where ");
dbcmd(dbeftproc,"table_name = 'EFT_TRANS' and field_name = 'trans_status'");
dbfcmd(dbeftproc, " and language_code = %d", gGUIlanguage );
br_dbsqlexec(dbeftproc);
if (Sybase_error)
{
dbcancel(dbeftproc);
return;
}
while((ret_code = dbresults(dbeftproc)) != NO_MORE_RESULTS)
{
if(ret_code == FAIL)
{
dbcancel(dbeftproc);
return;
}
dbbind(dbeftproc,1,INTBIND,0,&db_code);
dbbind(dbeftproc,2,NTBSTRINGBIND,0,description);
while (dbnextrow(dbeftproc) != NO_MORE_ROWS)
{
/* Found an entry. */
eft_num_display_statuses++;
eft_display_statuses = (EFT_DB_POPLIST_TYPE *)
realloc (eft_display_statuses,eft_num_display_statuses * sizeof (EFT_DB_POPLIST_TYPE));
eft_display_statuses_list = (XmString *)
realloc (eft_display_statuses_list,eft_num_display_statuses * sizeof (XmString));
eft_display_statuses[eft_num_display_statuses - 1].db_code = db_code;
strcpy (eft_display_statuses[eft_num_display_statuses - 1].description,description);
eft_display_statuses_list[eft_num_display_statuses - 1] = XmStringCreateSimple (description);
}
}
if(Sybase_error)
{
dbcancel(dbeftproc);
return;
}
}
开发者ID:huilang22,项目名称:Projects,代码行数:56,代码来源:eft_poplist_callbacks.c
示例5: get_all
void get_all(char *mitnr_in)
{
dbfcmd(dbproc,"SELECT m.Name, m.Vorname, m.Ort, m.Gebdat, m.Beruf, m.Telnr, mp.Istvzae, mp.Planvzae, p.Proname FROM Mitarbeiter m, MiPro mp, Projekt p WHERE m.Mitnr = mp.Mitnr AND mp.Pronr = p.Pronr AND m.Mitnr = '%s'", mitnr_in);
dbsqlexec(dbproc);
while (dbresults(dbproc)!=NO_MORE_RESULTS)
{
i=0;
dbbind(dbproc,1,NTBSTRINGBIND,0,name);
dbbind(dbproc,2,NTBSTRINGBIND,0,vorname);
dbbind(dbproc,3,NTBSTRINGBIND,0,ort);
dbbind(dbproc,4,DATETIMEBIND,0,(BYTE *)&gebdat);
dbbind(dbproc,5,NTBSTRINGBIND,0,beruf);
dbbind(dbproc,6,NTBSTRINGBIND,0,telnr);
dbbind(dbproc,7,FLT8BIND,0,(BYTE *)&istvzae);
dbbind(dbproc,8,FLT8BIND,0,(BYTE *)&planvzae);
dbbind(dbproc,9,NTBSTRINGBIND,0,proname);
while (dbnextrow(dbproc)!=NO_MORE_ROWS)
{
printf("%d:\t%s,\t%s,\t%s,\t%s,\t%s,\t%s,\t%f,\t%f,\t%s,\n",i, name, vorname, ort, date_to_str(gebdat), beruf, telnr, istvzae, planvzae, proname);
i++;
}
}
}
开发者ID:mYstar,项目名称:DBTMA,代码行数:27,代码来源:prakt1.c
示例6: pp_add_component
int pp_add_component (int comp_id,
int pkg_id,
int pkg_inst_id,
int pkg_inst_id_serv,
int level,
int id_value,
int subscr_no_resets,
int *comp_inst_id,
int *comp_inst_id_serv,
char *start_date,
int pkg_status)
{
int track_id;
int serv_id;
int status;
int ret_code;
dbcmd (dbproc1, "EXEC pp_add_component_to_pkg ");
dbfcmd(dbproc1, " @pkg_id = %d, ", pkg_id);
dbfcmd(dbproc1, " @pkg_inst_id = %d, ", pkg_inst_id);
dbfcmd(dbproc1, " @pkg_inst_id_serv = %d, ", pkg_inst_id_serv);
dbfcmd(dbproc1, " @pkg_status = %d, ",pkg_status );
dbfcmd(dbproc1, " @comp_id = %d, ", comp_id);
dbfcmd(dbproc1, " @id_type = %d, ", level);
dbfcmd(dbproc1, " @id_value = %d, ", id_value);
dbfcmd(dbproc1, " @subscr_no_resets = %d, ", subscr_no_resets);
dbfcmd(dbproc1, " @active_dt = '%s' ", start_date);
if(safe_dbexec(dbproc1,"INSERT_PKG", "insert_pkg"))
return(FAILURE);
while ((status = safe_dbresults (dbproc1, "INSERT_PKG", "insert_pkg")) != NO_MORE_RESULTS)
{
if (status == FAIL)
return(FAILURE);
dbbind (dbproc1, 1, INTBIND, 0, &track_id);
dbbind (dbproc1, 2, INTBIND, 0, &serv_id);
while ((ret_code = dbnextrow(dbproc1)) != NO_MORE_ROWS)
{
if(ret_code == FAIL)
return(FAILURE);
/* process results */
*comp_inst_id = track_id;
*comp_inst_id_serv = serv_id;
}
}
return (SUCCESS);
}
开发者ID:huilang22,项目名称:Projects,代码行数:52,代码来源:product_pkgs_callbacks.c
示例7: verify_provider_class
/* verify that the provider class is valid(exist in PROVIDER_CLASS_REF) */
int
verify_provider_class(RATE_USAGE_OVERRIDES_STRUCT *struct_ptr, int *count)
{
int i=0;
int ret_code;
dbcmd(dbproc1, " select count(*) ");
dbcmd(dbproc1, " from PROVIDER_CLASS_REF ");
dbfcmd(dbproc1, " where provider_class = %s", struct_ptr->provider_class);
if (safe_dbselect(dbproc1, "PROVIDER_CLASS_REF",
"verify_provider_class"))
{
return(FAILURE);
}
dbbind(dbproc1,1,INTBIND,0, count);
while (dbnextrow(dbproc1) == REG_ROW)
{
i++;
} /* end of while loop */
if(check_dbresults(dbproc1,ret_code,"PROVIDER_CLASS_REF",
"verify_provider_class"))
{
return(FAILURE);
}
return (SUCCESS);
}
开发者ID:huilang22,项目名称:Projects,代码行数:31,代码来源:rate_usage_or_util.c
示例8: verify_type_id_usg
int
verify_type_id_usg(RATE_USAGE_OVERRIDES_STRUCT *struct_ptr, int *count)
{
int i=0;
int ret_code;
dbcmd(dbproc1, " select count(*) ");
dbcmd(dbproc1, " from USAGE_TYPES ");
dbfcmd(dbproc1, " where type_id_usg = %s", struct_ptr->type_id_usg);
if (safe_dbselect(dbproc1, "USAGE_TYPES",
"verify_type_id_usg"))
{
return(FAILURE);
}
dbbind(dbproc1,1,INTBIND,0, count);
while (dbnextrow(dbproc1) == REG_ROW)
{
i++;
} /* end of while loop */
if(check_dbresults(dbproc1,ret_code,"USAGE_TYPES",
"verify_type_id_usg"))
{
return(FAILURE);
}
return (SUCCESS);
}
开发者ID:huilang22,项目名称:Projects,代码行数:32,代码来源:rate_usage_or_util.c
示例9: verify_terminate
int verify_terminate (int *ok_to_terminate)
{
RETCODE ret_code;
dbfcmd(dbproc1, "EXEC csr_verify_acct_terminate @account_no = %d",
gaccount_no);
br_dbsqlexec(dbproc1);
if (Sybase_error)
{
dbcancel(dbproc1);
return(FAILURE);
}
while ((ret_code = dbresults(dbproc1)) != NO_MORE_RESULTS)
{
if (ret_code != SUCCEED)
{
dbcancel(dbproc1);
return(FAILURE);
}
dbbind(dbproc1, 1, INTBIND, 0, ok_to_terminate);
while (dbnextrow(dbproc1) != NO_MORE_ROWS); /* empty */
}
if (Sybase_error)
{
dbcancel(dbproc1);
return(FAILURE);
}
return (SUCCESS);
} /* end verify_terminate */
开发者ID:huilang22,项目名称:Projects,代码行数:35,代码来源:custmain_db.c
示例10: test0
static void
test0(int n, const char * expected)
{
DBINT ind, expected_ind;
char text_buf[16];
dbfcmd(dbproc, "select c from #null where n = %d", n);
dbsqlexec(dbproc);
if (dbresults(dbproc) != SUCCEED) {
fprintf(stderr, "Was expecting a row.\n");
failed = 1;
dbcancel(dbproc);
return;
}
dbbind(dbproc, 1, NTBSTRINGBIND, 0, (BYTE *)text_buf);
if (use_nullbind)
dbnullbind(dbproc, 1, &ind);
memset(text_buf, 'a', sizeof(text_buf));
ind = -5;
if (dbnextrow(dbproc) != REG_ROW) {
fprintf(stderr, "Was expecting a row.\n");
failed = 1;
dbcancel(dbproc);
return;
}
text_buf[sizeof(text_buf) - 1] = 0;
printf("ind %d text_buf -%s-\n", (int) ind, text_buf);
expected_ind = 0;
if (strcmp(expected, "aaaaaaaaaaaaaaa") == 0)
expected_ind = -1;
/* do not check indicator if not bound */
if (!use_nullbind)
ind = expected_ind;
if (ind != expected_ind || strcmp(expected, text_buf) != 0) {
fprintf(stderr, "expected_ind %d expected -%s-\n", (int) expected_ind, expected);
failed = 1;
dbcancel(dbproc);
return;
}
if (dbnextrow(dbproc) != NO_MORE_ROWS) {
fprintf(stderr, "Only one row expected\n");
dbcancel(dbproc);
failed = 1;
}
while (dbresults(dbproc) == SUCCEED) {
/* nop */
}
}
开发者ID:mabrand,项目名称:freetds,代码行数:58,代码来源:null2.c
示例11: get_next_bill_date
int
get_next_bill_date (char *bill_period, char *billing_frequency,
char *prev_cutoff_date, char *next_bill_date)
{
int ret_code;
/* Nested select statement -- just one way to do this query */
dbfcmd(dbproc1, "select convert(char(8), min(ppdd_date), %d) ", gdatefmt);
dbcmd (dbproc1, "from BILL_CYCLE where ppdd_date in ");
dbcmd (dbproc1, "(select ppdd_date from BILL_CYCLE ");
if ((bill_period == NULL) || (strlen(bill_period) == 0))
dbcmd (dbproc1, "having bill_period = min(bill_period) ");
else
dbfcmd(dbproc1, "having bill_period = '%s' ", bill_period);
if ((billing_frequency == NULL) || (strlen(billing_frequency) == 0))
dbcmd (dbproc1, "and billing_frequency = min(billing_frequency) ");
else
dbfcmd(dbproc1, "and billing_frequency = %s ", billing_frequency);
if ((prev_cutoff_date == NULL) || (strlen(prev_cutoff_date) == 0))
dbcmd (dbproc1, "and cutoff_date > getdate()) ");
else
dbfcmd(dbproc1, "and cutoff_date > '%s') ", prev_cutoff_date);
br_dbsqlexec(dbproc1);
if (Sybase_error)
{
dbcancel(dbproc1);
return(FAILURE);
}
while ((ret_code = dbresults(dbproc1)) != NO_MORE_RESULTS)
{
if (ret_code != SUCCEED)
{
dbcancel(dbproc1);
return(FAILURE);
}
dbbind(dbproc1, 1, NTBSTRINGBIND, 0, next_bill_date);
while (dbnextrow(dbproc1) != NO_MORE_ROWS); /* empty */
}
if (Sybase_error)
{
dbcancel(dbproc1);
return(FAILURE);
}
return (SUCCESS);
} /* end get_next_bill_date */
开发者ID:huilang22,项目名称:Projects,代码行数:55,代码来源:custmain_db.c
示例12: char_test
static void
char_test(const char *null, int bindlen, const char *expected)
{
char db_c[16];
RETCODE ret;
if (null) {
fprintf(stderr, "\tdbsetnull(CHARBIND, %u, '%s').\n", (unsigned int) strlen(null), null);
ret = dbsetnull(dbproc, CHARBIND, strlen(null), (BYTE *) null);
if (ret != SUCCEED) {
fprintf(stderr, "dbsetnull returned error %d\n", (int) ret);
failed = 1;
}
}
memset(db_c, '_', sizeof(db_c));
strcpy(db_c, "123456");
dbcmd(dbproc, "select convert(char(20), null)");
dbsqlexec(dbproc);
if (dbresults(dbproc) != SUCCEED) {
fprintf(stderr, "Was expecting a row.\n");
failed = 1;
dbcancel(dbproc);
}
fprintf(stderr, "dbbind(CHARBIND, bindlen= %d).\n", bindlen);
dbbind(dbproc, 1, CHARBIND, bindlen, (BYTE *) &db_c);
db_c[sizeof(db_c)-1] = 0;
printf("buffer before/after dbnextrow: '%s'/", db_c);
if (dbnextrow(dbproc) != REG_ROW) {
fprintf(stderr, "Was expecting a row.\n");
failed = 1;
dbcancel(dbproc);
}
db_c[sizeof(db_c)-1] = 0;
printf("'%s'\n", db_c);
if (dbnextrow(dbproc) != NO_MORE_ROWS) {
fprintf(stderr, "Only one row expected\n");
dbcancel(dbproc);
failed = 1;
}
while (dbresults(dbproc) == SUCCEED) {
/* nop */
}
if (strcmp(db_c, expected) != 0) {
fprintf(stderr, "Invalid NULL '%s' returned expected '%s' (%s:%d)\n", db_c, expected, tds_basename(__FILE__), __LINE__);
failed = 1;
}
}
开发者ID:dparnell,项目名称:freetds,代码行数:55,代码来源:setnull.c
示例13: get_mitarbeiter
void get_mitarbeiter(char *beruf_in)
{
dbfcmd(dbproc,"SELECT Mitnr, Name, Vorname FROM Mitarbeiter WHERE Beruf = '%s'", beruf_in);
dbsqlexec(dbproc);
while (dbresults(dbproc)!=NO_MORE_RESULTS)
{
i=0;
dbbind(dbproc,1,NTBSTRINGBIND,5,mitnr);
dbbind(dbproc,2,NTBSTRINGBIND,10,name);
dbbind(dbproc,3,NTBSTRINGBIND,10,vorname);
while (dbnextrow(dbproc)!=NO_MORE_ROWS)
{
printf("%d:\t%s,\t%s,\t%s\n",i, mitnr, name, vorname);
i++;
}
}
}
开发者ID:mYstar,项目名称:DBTMA,代码行数:20,代码来源:prakt1.c
示例14: print_ort
void print_ort(void){
/*anzeige aller berufe*/
dbcmd(dbproc,"SELECT Ort FROM Mitarbeiter group by Ort");
dbsqlexec(dbproc);
while (dbresults(dbproc)!=NO_MORE_RESULTS)
{
dbbind(dbproc,1,NTBSTRINGBIND,0,Ort);
while (dbnextrow(dbproc)!=NO_MORE_ROWS)
{
printf(": %s\n",Mitarbeiter);
}
}
}
开发者ID:mYstar,项目名称:DBTMA,代码行数:15,代码来源:prakt1.c
示例15: insert_lebenslauf
void insert_lebenslauf(void){
/*anzeige aller berufe*/
dbcmd(dbproc,"SELECT Lebenslauf FROM Mitarbeiter");
dbsqlexec(dbproc);
while (dbresults(dbproc)!=NO_MORE_RESULTS)
{
dbbind(dbproc,1,STRINGBIND,0,abstract_var);
while (dbnextrow(dbproc)!=NO_MORE_ROWS)
{
strcpy(abstract_var, "Hauptschule");
dbwritetext(dbproc_insert, "Mitarbeiter.Lebenslauf",
dbtxptr(dbproc, 1), DBTXPLEN, dbtxtimestamp(dbproc,1),TRUE,
(DBINT)strlen(abstract_var),abstract_var);
}
}
}
开发者ID:mYstar,项目名称:DBTMA,代码行数:18,代码来源:prakt1.c
示例16: get_berufe
void get_berufe()
{
dbcmd(dbproc,"SELECT Beruf FROM Mitarbeiter GROUP BY Beruf");
dbsqlexec(dbproc);
while (dbresults(dbproc)!=NO_MORE_RESULTS)
{
i=0;
dbbind(dbproc,1,NTBSTRINGBIND,15,beruf);
while (dbnextrow(dbproc)!=NO_MORE_ROWS)
{
printf("%d: %s\n",i, beruf);
i++;
}
}
}
开发者ID:mYstar,项目名称:DBTMA,代码行数:18,代码来源:prakt1.c
示例17: get_rate_usage_or_max_seqnum
int
get_rate_usage_or_max_seqnum(int *max_seqnum)
{
int ret_code;
dbcmd(dbproc1,"SELECT max(seqnum) from RATE_USAGE_OVERRIDES ");
if(safe_dbselect(dbproc1, "RATE_USAGE_OVERRIDES", "get_rate_usage_or_max_seqnum"))
return(FAILURE);
dbbind(dbproc1, 1, INTBIND, 0, max_seqnum);
while((ret_code = dbnextrow(dbproc1)) == REG_ROW);
if(check_dbresults(dbproc1, ret_code, "RATE_USAGE_OVERRIDES",
"get_rate_usage_or_max_seqnum"))
return(FAILURE);
return(SUCCESS);
}
开发者ID:huilang22,项目名称:Projects,代码行数:21,代码来源:rate_usage_or_util.c
示例18: get_num_of_cust
int
get_num_of_cust(char *from_str,
char *search_str,
int *num_of_cust,
int *last_account_no)
{
RETCODE ret_code;
/* Get the number of accounts that match the find criteria.
** This query will return a count of 1 even if the user is
** finding on subscr_no and there are >1 EMF records with
** the same subscr_no/account_no. A simple "select count(*)
** <from_str> <where_str>" would return >1 and would then
** popup the account selection box.
*/
/* get count from the catalog db */
dbcancel(dbcatalog);
dbcmd (dbcatalog, "select SERVER_LOOKUP.account_no ");
dbfcmd(dbcatalog, " %s %s ", from_str, search_str);
if (safe_dbselect(dbcatalog, "ARBOR_CATALOG", "get_num_of_cust()"))
return FAILURE;
dbbind(dbcatalog, 1, INTBIND, 0, last_account_no);
*num_of_cust = 0;
while ((ret_code = dbnextrow(dbcatalog)) == REG_ROW)
(*num_of_cust)++;
if (check_dbresults(dbcatalog, ret_code,
"ARBOR_CATALOG", "get_num_of_cust()"))
return FAILURE;
return SUCCESS;
} /* end get_num_of_cust */
开发者ID:huilang22,项目名称:Projects,代码行数:37,代码来源:custmain_db.c
示例19: cleanup
bool QTDSResult::reset (const QString& query)
{
cleanup();
if (!driver() || !driver()-> isOpen() || driver()->isOpenError())
return false;
setActive(false);
setAt(QSql::BeforeFirstRow);
if (dbcmd(d->dbproc, const_cast<char*>(query.toLocal8Bit().constData())) == FAIL) {
setLastError(d->lastError);
return false;
}
if (dbsqlexec(d->dbproc) == FAIL) {
setLastError(d->lastError);
dbfreebuf(d->dbproc);
return false;
}
if (dbresults(d->dbproc) != SUCCEED) {
setLastError(d->lastError);
dbfreebuf(d->dbproc);
return false;
}
setSelect((DBCMDROW(d->dbproc) == SUCCEED)); // decide whether or not we are dealing with a SELECT query
int numCols = dbnumcols(d->dbproc);
if (numCols > 0) {
d->buffer.resize(numCols * 2);
init(numCols);
}
for (int i = 0; i < numCols; ++i) {
int dbType = dbcoltype(d->dbproc, i+1);
QVariant::Type vType = qDecodeTDSType(dbType);
QSqlField f(QString::fromAscii(dbcolname(d->dbproc, i+1)), vType);
f.setSqlType(dbType);
f.setLength(dbcollen(d->dbproc, i+1));
d->rec.append(f);
RETCODE ret = -1;
void* p = 0;
switch (vType) {
case QVariant::Int:
p = malloc(4);
ret = dbbind(d->dbproc, i+1, INTBIND, (DBINT) 4, (unsigned char *)p);
break;
case QVariant::Double:
// use string binding to prevent loss of precision
p = malloc(50);
ret = dbbind(d->dbproc, i+1, STRINGBIND, 50, (unsigned char *)p);
break;
case QVariant::String:
p = malloc(dbcollen(d->dbproc, i+1) + 1);
ret = dbbind(d->dbproc, i+1, STRINGBIND, DBINT(dbcollen(d->dbproc, i+1) + 1), (unsigned char *)p);
break;
case QVariant::DateTime:
p = malloc(8);
ret = dbbind(d->dbproc, i+1, DATETIMEBIND, (DBINT) 8, (unsigned char *)p);
break;
case QVariant::ByteArray:
p = malloc(dbcollen(d->dbproc, i+1) + 1);
ret = dbbind(d->dbproc, i+1, BINARYBIND, DBINT(dbcollen(d->dbproc, i+1) + 1), (unsigned char *)p);
break;
default: //don't bind the field since we do not support it
qWarning("QTDSResult::reset: Unsupported type for field \"%s\"", dbcolname(d->dbproc, i+1));
break;
}
if (ret == SUCCEED) {
d->buffer[i * 2] = p;
ret = dbnullbind(d->dbproc, i+1, (DBINT*)(&d->buffer[i * 2 + 1]));
} else {
d->buffer[i * 2] = 0;
d->buffer[i * 2 + 1] = 0;
free(p);
}
if ((ret != SUCCEED) && (ret != -1)) {
setLastError(d->lastError);
return false;
}
}
setActive(true);
return true;
}
开发者ID:Suneal,项目名称:qt,代码行数:82,代码来源:qsql_tds.cpp
示例20: main
int
main(int argc, char **argv)
{
const int rows_to_add = 50;
LOGINREC *login;
DBPROCESS *dbproc;
int i, expected_error;
char *s, teststr[1024];
DBINT testint;
int failed = 0;
set_malloc_options();
read_login_info(argc, argv);
printf("Starting %s\n", argv[0]);
dbinit();
dberrhandle(syb_err_handler);
dbmsghandle(syb_msg_handler);
printf("About to logon\n");
login = dblogin();
DBSETLPWD(login, PASSWORD);
DBSETLUSER(login, USER);
DBSETLAPP(login, "t0004");
printf("About to open\n");
dbproc = dbopen(login, SERVER);
if (strlen(DATABASE))
dbuse(dbproc, DATABASE);
dbloginfree(login);
printf("creating table\n");
sql_cmd(dbproc);
dbsqlexec(dbproc);
while (dbresults(dbproc) != NO_MORE_RESULTS) {
/* nop */
}
printf("insert\n");
for (i = 1; i < rows_to_add; i++) {
sql_cmd(dbproc);
dbsqlexec(dbproc);
while (dbresults(dbproc) != NO_MORE_RESULTS) {
/* nop */
}
}
sql_cmd(dbproc); /* select */
dbsqlexec(dbproc);
if (dbresults(dbproc) != SUCCEED) {
printf("Was expecting a result set.");
exit(1);
}
for (i = 1; i <= dbnumcols(dbproc); i++)
printf("col %d is %s\n", i, dbcolname(dbproc, i));
dbbind(dbproc, 1, INTBIND, 0, (BYTE *) & testint);
dbbind(dbproc, 2, STRINGBIND, 0, (BYTE *) teststr);
for (i = 1; i <= 24; i++) {
char expected[1024];
sprintf(expected, "row %04d", i);
if (i % 5 == 0) {
dbclrbuf(dbproc, 5);
}
testint = -1;
strcpy(teststr, "bogus");
if (REG_ROW != dbnextrow(dbproc)) {
fprintf(stderr, "Failed. Expected a row\n");
exit(1);
}
if (testint != i) {
fprintf(stderr, "Failed. Expected i to be %d, was %d\n", i, (int) testint);
abort();
}
if (0 != strncmp(teststr, expected, strlen(expected))) {
printf("Failed. Expected s to be |%s|, was |%s|\n", expected, teststr);
abort();
}
printf("Read a row of data -> %d %s\n", (int) testint, teststr);
}
printf("second select\n");
printf("testing dbgetchar...\n");
for (i=0; (s = dbgetchar(dbproc, i)) != NULL; i++) {
putchar(*s);
//.........这里部分代码省略.........
开发者ID:FreeTDS,项目名称:freetds,代码行数:101,代码来源:t0004.c
注:本文中的dbbind函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论