1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/**************************************************
* isql
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 18.FEB.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sqlext.h>
#include <ini.h>
#ifdef HAVE_STRTOL
char *szSyntax =
"\n" \
"**********************************************\n" \
"* unixODBC - isql *\n" \
"**********************************************\n" \
"* Syntax *\n" \
"* *\n" \
"* isql DSN [UID [PWD]] [options] *\n" \
"* *\n" \
"* Options *\n" \
"* *\n" \
"* -b batch.(no prompting etc) *\n" \
"* -dx delimit columns with x *\n" \
"* -x0xXX delimit columns with XX, where *\n" \
"* x is in hex, ie 0x09 is tab *\n" \
"* -w wrap results in an HTML table *\n" \
"* -c column names on first row. *\n" \
"* (only used when -d) *\n" \
"* -mn limit column display width to n *\n" \
"* -v verbose. *\n" \
"* -lx set locale to x *\n" \
"* --version version *\n" \
"* *\n" \
"* Notes *\n" \
"* *\n" \
"* isql supports redirection and piping *\n" \
"* for batch processing. *\n" \
"* *\n" \
"* Examples *\n" \
"* *\n" \
"* cat My.sql | isql WebDB MyID MyPWD -w *\n" \
"* *\n" \
"* Each line in My.sql must contain *\n" \
"* exactly 1 SQL command except for the *\n" \
"* last line which must be blank. *\n" \
"* *\n" \
"* Please visit; *\n" \
"* *\n" \
"* http://www.unixodbc.org *\n" \
"* pharvey@codebydesign.com *\n" \
"* nick@easysoft.com *\n" \
"**********************************************\n\n";
#else
char *szSyntax =
"\n" \
"**********************************************\n" \
"* unixODBC - isql *\n" \
"**********************************************\n" \
"* Syntax *\n" \
"* *\n" \
"* isql DSN [UID [PWD]] [options] *\n" \
"* *\n" \
"* Options *\n" \
"* *\n" \
"* -b batch.(no prompting etc) *\n" \
"* -dx delimit columns with x *\n" \
"* -x0xXX delimit columns with XX, where *\n" \
"* x is in hex, ie 0x09 is tab *\n" \
"* -w wrap results in an HTML table *\n" \
"* -c column names on first row. *\n" \
"* (only used when -d) *\n" \
"* -mn limit column display width to n *\n" \
"* -v verbose. *\n" \
"* --version version *\n" \
"* *\n" \
"* Notes *\n" \
"* *\n" \
"* isql supports redirection and piping *\n" \
"* for batch processing. *\n" \
"* *\n" \
"* Examples *\n" \
"* *\n" \
"* cat My.sql | isql WebDB MyID MyPWD -w *\n" \
"* *\n" \
"* Each line in My.sql must contain *\n" \
"* exactly 1 SQL command except for the *\n" \
"* last line which must be blank. *\n" \
"* *\n" \
"* Please visit; *\n" \
"* *\n" \
"* http://www.unixodbc.org *\n" \
"* pharvey@codebydesign.com *\n" \
"* nick@easysoft.com *\n" \
"**********************************************\n\n";
#endif
#define MAX_DATA_WIDTH 300
#ifndef max
#define max( a, b ) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min( a, b ) (((a) < (b)) ? (a) : (b))
#endif
int OpenDatabase( SQLHENV *phEnv, SQLHDBC *phDbc, char *szDSN, char *szUID, char *szPWD );
int ExecuteSQL( SQLHDBC hDbc, char *szSQL, char cDelimiter, int bColumnNames, int bHTMLTable );
int ExecuteHelp( SQLHDBC hDbc, char *szSQL, char cDelimiter, int bColumnNames, int bHTMLTable );
int CloseDatabase( SQLHENV hEnv, SQLHDBC hDbc );
void WriteHeaderHTMLTable( SQLHSTMT hStmt );
void WriteHeaderNormal( SQLHSTMT hStmt, SQLCHAR *szSepLine );
void WriteHeaderDelimited( SQLHSTMT hStmt, char cDelimiter );
void WriteBodyHTMLTable( SQLHSTMT hStmt );
SQLLEN WriteBodyNormal( SQLHSTMT hStmt );
void WriteBodyDelimited( SQLHSTMT hStmt, char cDelimiter );
void WriteFooterHTMLTable( SQLHSTMT hStmt );
void WriteFooterNormal( SQLHSTMT hStmt, SQLCHAR *szSepLine, SQLLEN nRows );
int DumpODBCLog( SQLHENV hEnv, SQLHDBC hDbc, SQLHSTMT hStmt );
|