text_buffer.c

来自「在Linux/Unix下面访问WINDOWS SQLSERVER 的ODBC驱动」· C语言 代码 · 共 154 行

C
154
字号
/*  * Purpose: Test to see if row buffering and blobs works correctly. * Functions: dbbind dbnextrow dbopen dbresults dbsqlexec dbgetrow */#include "common.h"static char software_version[] = "$Id: text_buffer.c,v 1.3 2007/12/04 02:06:38 jklowden Exp $";static void *no_unused_var_warn[] = { software_version, no_unused_var_warn };intmain(int argc, char **argv){	LOGINREC *login;	DBPROCESS *dbproc;	int i;	char teststr[1024];	DBINT testint;	set_malloc_options();	read_login_info(argc, argv);	fprintf(stdout, "Start\n");	add_bread_crumb();	/* Fortify_EnterScope(); */	dbinit();	add_bread_crumb();	dberrhandle(syb_err_handler);	dbmsghandle(syb_msg_handler);	fprintf(stdout, "About to logon\n");	add_bread_crumb();	login = dblogin();	DBSETLPWD(login, PASSWORD);	DBSETLUSER(login, USER);	DBSETLAPP(login, "text_buffer");	DBSETLHOST(login, "ntbox.dntis.ro");	fprintf(stdout, "About to open\n");	add_bread_crumb();	dbproc = dbopen(login, SERVER);	if (strlen(DATABASE))		dbuse(dbproc, DATABASE);	add_bread_crumb();	dbloginfree(login);	add_bread_crumb();#ifdef MICROSOFT_DBLIB	dbsetopt(dbproc, DBBUFFER, "100");#else	dbsetopt(dbproc, DBBUFFER, "100", 0);#endif	add_bread_crumb();	fprintf(stdout, "creating table\n");	dbcmd(dbproc, "create table #dblib (i int not null, s text)");	dbsqlexec(dbproc);	while (dbresults(dbproc) != NO_MORE_RESULTS) {		/* nop */	}	fprintf(stdout, "insert\n");	dbcmd(dbproc, "insert into #dblib values (1, 'ABCDEF')");	dbsqlexec(dbproc);	while (dbresults(dbproc) != NO_MORE_RESULTS) {		/* nop */	}	dbcmd(dbproc, "insert into #dblib values (2, 'abc')");	dbsqlexec(dbproc);	while (dbresults(dbproc) != NO_MORE_RESULTS) {		/* nop */	}	fprintf(stdout, "select\n");	dbcmd(dbproc, "select * from #dblib order by i");	dbsqlexec(dbproc);	add_bread_crumb();	if (dbresults(dbproc) != SUCCEED) {		add_bread_crumb();		fprintf(stdout, "Was expecting a result set.");		return 1;	}	add_bread_crumb();	for (i = 1; i <= dbnumcols(dbproc); i++) {		add_bread_crumb();		printf("col %d is %s\n", i, dbcolname(dbproc, i));		add_bread_crumb();	}	add_bread_crumb();	dbbind(dbproc, 1, INTBIND, 0, (BYTE *) & testint);	add_bread_crumb();	dbbind(dbproc, 2, STRINGBIND, 0, (BYTE *) teststr);	add_bread_crumb();	add_bread_crumb();	if (REG_ROW != dbnextrow(dbproc)) {		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	if (dbdatlen(dbproc, 2) != 6 || 0 != strcmp("ABCDEF", teststr)) {		fprintf(stderr, "Expected |%s|, found |%s|\n", "ABCDEF", teststr);		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	if (REG_ROW != dbnextrow(dbproc)) {		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	if (dbdatlen(dbproc, 2) != 3 || 0 != strcmp("abc", teststr)) {		fprintf(stderr, "Expected |%s|, found |%s|\n", "abc", teststr);		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	/* get again row 1 */	dbgetrow(dbproc, 1);	/* here length and string should be ok */	if (dbdatlen(dbproc, 2) != 6 || 0 != strcmp("ABCDEF", teststr)) {		fprintf(stderr, "Expected |%s|, found |%s|\n", "ABCDEF", teststr);		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	dbgetrow(dbproc, 2);	if (dbdatlen(dbproc, 2) != 3 || 0 != strcmp("abc", teststr)) {		fprintf(stderr, "Expected |%s|, found |%s|\n", "abc", teststr);		fprintf(stderr, "dblib failed for %s:%d\n", __FILE__, __LINE__);		return 1;	}	add_bread_crumb();	dbexit();	add_bread_crumb();	printf("dblib passed for %s\n", __FILE__);	free_bread_crumb();	return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?