⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t0015.c

📁 unix上的TDS协议实现
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <stdio.h>#ifdef _WIN32#define DBNTWIN32#include <windows.h>#endif#include <sqlfront.h>#include <sqldb.h>#include "common.h"static char  software_version[]   = "$Id: t0015.c,v 1.2 2002/08/29 09:54:54 freddy77 Exp $";static void *no_unused_var_warn[] = {software_version,                                     no_unused_var_warn};int failed = 0;int main(){   const int   rows_to_add = 50;   LOGINREC   *login;   DBPROCESS   *dbproc;   int         i;   char        teststr[1024];   DBINT       testint;#ifdef __FreeBSD__   /*    * Options for malloc   A- all warnings are fatal, J- init memory to 0xD0,    * R- always move memory block on a realloc.    */   extern char *malloc_options;   malloc_options = "AJR";#endif#ifndef _WIN32   tdsdump_open(NULL);#endif   read_login_info();   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,"t0015");fprintf(stdout, "About to open\n");   add_bread_crumb();   dbproc = dbopen(login, SERVER);   if (strlen(DATABASE)) dbuse(dbproc,DATABASE);   add_bread_crumb();   fprintf(stdout, "Dropping table\n");   add_bread_crumb();   dbcmd(dbproc, "drop table #dblib0015");   add_bread_crumb();   dbsqlexec(dbproc);   add_bread_crumb();   while (dbresults(dbproc)!=NO_MORE_RESULTS)   {      /* nop */   }   add_bread_crumb();   fprintf(stdout, "creating table\n");   dbcmd(dbproc,         "create table #dblib0015 (i int not null, s char(10) not null)");   dbsqlexec(dbproc);   while (dbresults(dbproc)!=NO_MORE_RESULTS)   {      /* nop */   }   fprintf(stdout, "insert\n");   for(i=0; i<rows_to_add; i++)   {      char   cmd[1024];      sprintf(cmd, "insert into #dblib0015 values (%d, 'row %03d')", i, i);      fprintf(stdout, "%s\n",cmd);      dbcmd(dbproc, cmd);      dbsqlexec(dbproc);      while (dbresults(dbproc)!=NO_MORE_RESULTS)      {         /* nop */      }   }   fprintf(stdout, "select\n");   dbcmd(dbproc,"select * from #dblib0015 order by i");   dbsqlexec(dbproc);   add_bread_crumb();   if (dbresults(dbproc)!=SUCCEED)   {      add_bread_crumb();      failed = 1;      fprintf(stdout, "Was expecting a result set.");      exit(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();   if (SUCCEED != dbbind(dbproc,1,INTBIND,-1,(BYTE *) &testint))   {      failed = 1;      fprintf(stderr, "Had problem with bind\n");      abort();   }   add_bread_crumb();   if (SUCCEED != dbbind(dbproc,2,STRINGBIND,-1,(BYTE *) teststr))   {      failed = 1;      fprintf(stderr, "Had problem with bind\n");      abort();   }   add_bread_crumb();   add_bread_crumb();   if (REG_ROW != dbnextrow(dbproc))   {      failed = 1;      fprintf(stderr, "Failed.  Expected a row\n");      exit(1);   }   dbcancel(dbproc);   fprintf(stdout, "select 2\n");   dbcmd(dbproc,"select * from #dblib0015 where i > 25 order by i");   dbsqlexec(dbproc);   if (dbresults(dbproc)!=SUCCEED)   {      add_bread_crumb();      failed = 1;      fprintf(stdout, "Was expecting a result set.");      exit(1);   }   add_bread_crumb();   if (SUCCEED != dbbind(dbproc,1,INTBIND,-1,(BYTE *) &testint))   {      failed = 1;      fprintf(stderr, "Had problem with bind\n");      abort();   }   add_bread_crumb();   if (SUCCEED != dbbind(dbproc,2,STRINGBIND,-1,(BYTE *) teststr))   {      failed = 1;      fprintf(stderr, "Had problem with bind\n");      abort();   }   add_bread_crumb();   for(i=26; i<rows_to_add; i++)   {      char   expected[1024];      sprintf(expected, "row %03d", i);      add_bread_crumb();      if (REG_ROW != dbnextrow(dbproc))      {         failed = 1;         fprintf(stderr, "Failed.  Expected a row\n");         exit(1);      }      add_bread_crumb();      if (testint!=i)      {         failed = 1;         fprintf(stderr, "Failed.  Expected i to be %d, was %d\n", i,                 (int)testint);         abort();      }      if (0!= strncmp(teststr, expected, strlen(expected)))      {         failed = 1;         fprintf(stdout, "Failed.  Expected s to be |%s|, was |%s|\n",                 expected, teststr);         abort();      }      printf("Read a row of data -> %d %s\n", (int)testint, teststr);   }   add_bread_crumb();   if (dbnextrow(dbproc)!=NO_MORE_ROWS)   {      failed = 1;      fprintf(stderr, "Was expecting no more rows\n");      exit(1);   }   add_bread_crumb();   dbexit();   add_bread_crumb();   fprintf(stdout, "dblib %s on %s\n",            (failed?"failed!":"okay"),           __FILE__);   return failed ? 1 : 0; }

⌨️ 快捷键说明

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