static int msql_connect (dbconn_t * c, char * host, char * database, char * username, char * password) { c->msql.handle = msqlConnect(host); if (c->msql.handle < 1) { return 0; } if (msqlSelectDB(c->msql.handle, database) == -1) { msqlClose(c->msql.handle); return 0; } c->msql.result_set = 0; return 1; }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% boolean mSQLDBConnection::connect(Properties *cfg){ char *tmp = strdupn( cfg->get(DBC_HOST) ); sock = msqlConnect(tmp); free(tmp); if (sock < 0) return false; tmp = strdupn( cfg->get(DBC_DATABASE) ); if (msqlSelectDB(sock, tmp) < 0){ //msqlClose(sock); sock = -1;
void main(void) { int dbh; m_result *tmp; m_row res; time_t clock; if( (dbh=msqlConnect(NULL))<0) die(msqlErrMsg); if( msqlSelectDB(dbh, "web") < 0) die(msqlErrMsg); if( msqlQuery(dbh, "select hostname, who_updated, date_updated from virtuals") < 0) die(msqlErrMsg); tmp=msqlStoreResult(); puts("Content-type: text/html\n"); puts("<html><head><title>Virtual Hosts</title></head>\n"); puts("<body bgcolor=\"ffffff\">\n"); puts("<h2>Virtual Hosts on Heavy</h2>\n<table>\n"); puts("<tr><td>Hostname</td><td>Who updated</td><td>Last Updated</td></tr>"); while( (res=msqlFetchRow(tmp)) !=NULL) { clock=atol(res[2]); printf("<tr><td color=\"eeeeff\"><a \ href=\"/cgi-bin/tools/hosts/gethostinfo.cgi?%s\">%s</a></td> \ <td>%s</td><td>%s</td></tr>\n", res[0], res[0], res[1], ctime(&clock) ); } puts("</table><hr align=\"left\" width=\"50%\">"); puts("<font size=\"-2\">"); puts("Copyright © 1996 <a href=\"http://www.ipa.net/\">Internet Partners of America</a>"); puts("</font></body></html>"); msqlFreeResult(tmp); msqlClose(dbh); }
void main(int argc, char *argv[]) { int dbh, tmpint; m_result *tmp; m_row res; char query[500]; static char *selected="SELECTED"; char *c[2]={"", ""}, *t[2]={"", ""}, *e[2]={"", ""}, *a[2]={"", ""}; struct cgiform *form; char *hostname; puts("Content-type: text/html\n"); puts("<html><head><title>Info</title></head>\n"); puts("<body bgcolor=\"ffffff\">\n"); if( (dbh=msqlConnect(NULL))<0) die(msqlErrMsg); if( msqlSelectDB(dbh, "web") < 0) die(msqlErrMsg); if(argc>1) { hostname=argv[1]; } else { form=cgiinit(); hostname=cgigetdata(form, "hostname"); } sprintf(query, "select * from virtuals where hostname='%s'", hostname); if( msqlQuery(dbh, query) < 0) { printf("Oops, didn't like that: %s<br>\n", msqlErrMsg); puts("</body></html>"); exit(0); } tmp=msqlStoreResult(); puts("<h2>Edit a virtual host</h2>"); puts("<form action=\"/cgi-bin/tools/hosts/edithost.cgi\" \ method=\"POST\">"); res=msqlFetchRow(tmp); if(res==NULL) { printf("Problem getting the data<br>\n"); puts("</body></html>"); exit(0); } tmpint=atoi(res[6]); c[tmpint]=selected; tmpint=atoi(res[4]); t[tmpint]=selected; tmpint=atoi(res[5]); e[tmpint]=selected; tmpint=atoi(res[9]); a[tmpint]=selected; puts("<table>\n"); printf("<tr><td>Hostname:</td><td><input name=\"hostname\" \ value=\"%s\"></td></tr>\n", res[0]); printf("<tr><td>Admin:</td><td><input name=\"admin\" \ value=\"%s\"></td></tr>\n", res[1]); printf("<tr><td>User:</td><td><input name=\"user\" \ value=\"%s\"></td></tr>\n", res[2]); printf("<tr><td>Group:</td><td><input name=\"group\" \ value=\"%s\"></td></tr>\n", res[3]); printf("<tr><td>Keep Transfer log:</td><td><select name=\"trans_log\">\ <option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n", t[0], t[1]); printf("<tr><td>Keep Error log:</td><td><select name=\"err_log\">\ <option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n", e[0], e[1]); printf("<tr><td>Create CGI bin:</td><td><select name=\"cgi_bin\">\ <option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n", c[0], c[1]); printf("<tr><td>Active:</td><td><select name=\"active\">\ <option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n", a[0], a[1]); puts("</table><input type=\"submit\" value=\"Save it\"></form><br>"); printf("<a href=\"/cgi-bin/tools/hosts/deletehost.cgi?%s\">Delete %s</a>", res[0], res[0]); puts("<hr align=\"left\" width=\"50%\">"); puts("<font size=\"-2\">"); puts("Copyright © 1996 <a href=\"/\">SPY Internetworking</a>"); puts("</font></body></html>"); msqlFreeResult(tmp); msqlClose(dbh); }
int main() { string SSN1 = "123-45-1001"; string SSN2 = "123-45-1002"; string SSN3 = "123-45-1003"; string SSN4 = "123-45-1004"; string SSN5 = "123-45-1005"; string Name1 = "Chess"; string Name2 = "Bridge"; string Name3 = "Tennis"; time_t today; Person *p; Club *c; Membership *m; int handle; today = time( &today ); // load the specific configuration file // if ( msqlLoadConfigFile( "/web/kochut/public_html/msql.conf" ) == -1 ) { cerr << "mSQL error: " << msqlErrMsg << endl; cerr << "\nProbable cause: SQL server is not running.\n"; cerr << "\n or server miscunfiguration in msql.conf.\n"; cerr << "\nSolution: Reconfigure/Restart the server\n"; exit(1); } // connect to the database server on ajax // if ( ( handle = msqlConnect( "ajax.cs.uga.edu" ) ) == -1 ) { cerr << "mSQL error: " << msqlErrMsg << endl; cerr << "\nProbable cause: SQL server is not running.\n"; cerr << "\nSolution: Restart the server\n"; exit(1); } // open database 'clubs' // if ( msqlSelectDB( handle, "clubs" ) == -1 ) { cerr << "mSQL error: " << msqlErrMsg << endl; cerr << "\nProbable cause: databse clubs does not exist.\n"; cerr << "\nSolution: create the database using msqladmin creat clubs\n"; exit(1); } // retrieve a Club object // try { c = Club::DBRead( Name1, handle ); p = Person::DBRead( SSN1, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); p = Person::DBRead( SSN3, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); cout << "Added members to club: " << Name1 << endl; // retrieve a Club object // c = Club::DBRead( Name2, handle ); p = Person::DBRead( SSN2, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); p = Person::DBRead( SSN3, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); p = Person::DBRead( SSN5, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); cout << "Added members to club: " << Name2 << endl; // retrieve a Club object // c = Club::DBRead( Name3, handle ); p = Person::DBRead( SSN4, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); p = Person::DBRead( SSN2, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); p = Person::DBRead( SSN5, handle ); m = new Membership( p, c, today ); m->DBWrite( handle ); } catch ( ClubsException &ce ) { cerr << ce.get_Msg() << endl; exit(1); } cout << "Added members to club: " << Name3 << endl; cout << endl; cout << "Club memberships have been written to the database.\n"; cout << "Closing the database.\n"; // close the database // msqlClose( handle ); return 0; }
/* * SubVar * * This function substitutes variables designated by the leading separator (sep) * with values with matching names. The string buffer will be realloced in 512-byte * chunks if needed. */ char *SubVar(char sep, char *var_name, char *var_value, char *oldbuf, int *bufsize) { char *buf, *s, *t; int l, n; char o; char *local_buf; #if MSQL char *u; int i,j; int numi, numj; char temp[1024]; m_result *result=NULL; m_row record; int new_connection=0; #endif l=strlen(oldbuf); n=strlen(var_value); if(l-(int)strlen(var_name)-1+(int)strlen(var_value) >(int)(*bufsize-1)) { #if DEBUG fprintf(fperr,"Query buffer re-allocated\n"); fflush(fperr); #endif buf=realloc(oldbuf,*bufsize+((n>512)?n:512)); *bufsize+=((n>512)?n:512); } else buf=oldbuf; /* I don't trust strdup() on many systems */ local_buf=malloc(*bufsize*sizeof(char)); strcpy(local_buf,buf); if(!local_buf) { html_error("FI Error","Unable to allocate memory"); exit(-1); } s=local_buf; while(*s!='\0') { if(*s==sep) { if(s>local_buf && *(s-1)=='\\') { /* Allow for escaping the separator */ s++; continue; } n=strcspn(s+1," ,()'\n:;.{}[]-+=~!@#$%^*<>\""); t=s+n+1; o=*t; *t='\0'; if(!strcasecmp(var_name,s+1)) { *s='\0'; #if MSQL if(!strcasecmp(var_name,"sql")) { /* looking for database name */ #if DEBUG fprintf(fperr,"var_name=[%s], var_value=[%s]\n",var_name,var_value); fflush(fperr); #endif u=strchr(var_value,' '); if(u) { *u='\0'; if(strlen(current_db)==0) { if(dbsock==-1) { dbsock=msqlConnect(NULL); new_connection=1; } if(msqlSelectDB(dbsock,var_value)<0) { strcpy(temp,msqlErrMsg); current_db[0]='\0'; } else { strcpy(current_db,var_value); } } if(msqlQuery(dbsock,u+1)<0) strcpy(temp,msqlErrMsg); else { temp[0]='\0'; msqlStoreResult(result); numi=msqlNumRows(result); for(i=0;i<numi;i++) { if(strlen(before_record)) strcat(temp,before_record); msqlDataSeek(result,i); numj=msqlNumFields(result); record=msqlFetchRow(result); for(j=0;j<numj;j++) { if(strlen(before_element)) strcat(temp,before_element); strcat(temp,record[j]); if(strlen(after_element)) strcat(temp,after_element); } if(strlen(after_record)) strcat(temp,after_record); } msqlFreeResult(result); if(new_connection) { msqlClose(dbsock); dbsock=-1; current_db[0]='\0'; } } } } #endif sprintf(buf,"%s%s%c%s",local_buf,var_value,o,t+1); strcpy(local_buf,buf); } else { *t=o; } s=t+1; } else s++; } free(local_buf); return(buf); }
SQLRETURN SQLConnect( SQLHDBC hDrvDbc, SQLCHAR *szDataSource, SQLSMALLINT nDataSourceLength, SQLCHAR *szUID, SQLSMALLINT nUIDLength, SQLCHAR *szPWD, SQLSMALLINT nPWDLength ) { HDRVDBC hDbc = (HDRVDBC)hDrvDbc; char szDATABASE[INI_MAX_PROPERTY_VALUE+1]; char szCONFIGFILE[INI_MAX_PROPERTY_VALUE+1]; char szHOST[INI_MAX_PROPERTY_VALUE+1]; /* SANITY CHECKS */ if( SQL_NULL_HDBC == hDbc ) return SQL_INVALID_HANDLE; sprintf( hDbc->szSqlMsg, "hDbc=$%08lX szDataSource=(%s)", hDbc, szDataSource ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); if( hDbc->bConnected == 1 ) { logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Already connected" ); return SQL_ERROR; } if ( strlen( szDataSource ) > ODBC_FILENAME_MAX+INI_MAX_OBJECT_NAME ) { logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Given Data Source is too long. I consider it suspect." ); return SQL_ERROR; } /******************** * gather and use any required DSN properties * - CONFIGFILE - for msqlLoadConfigFile() (has precedence over other properties) * - DATABASE * - HOST (localhost assumed if not supplied) ********************/ szDATABASE[0] = '\0'; szHOST[0] = '\0'; szCONFIGFILE[0] = '\0'; SQLGetPrivateProfileString( szDataSource, "DATABASE", "", szDATABASE, sizeof(szDATABASE), ".odbc.ini" ); if ( szDATABASE[0] == '\0' ) { sprintf( hDbc->szSqlMsg, "SQL_ERROR Could not find Driver entry for %s in system information", szDataSource ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); return SQL_ERROR; } SQLGetPrivateProfileString( szDataSource, "HOST", "", szHOST, sizeof(szHOST), ".odbc.ini" ); SQLGetPrivateProfileString( szDataSource, "CONFIGFILE", "", szCONFIGFILE, sizeof(szCONFIGFILE), ".odbc.ini" ); /******************** * 1. initialise structures * 2. try connection with database using your native calls * 3. store your server handle in the extras somewhere * 4. set connection state * hDbc->bConnected = TRUE; ********************/ if ( szCONFIGFILE[0] != '\0' ) { if ( msqlLoadConfigFile( szCONFIGFILE ) != 0 ) { sprintf( hDbc->szSqlMsg, "SQL_ERROR %s", msqlErrMsg ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); sprintf( hDbc->szSqlMsg, "SQL_WARNING Failed to use (%s)", szCONFIGFILE ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); return SQL_ERROR; } } if ( szHOST[0] == '\0' ) { hDbc->hDbcExtras->hServer = msqlConnect( NULL ); /* this is faster than using localhost */ strcpy( szHOST, "localhost" ); } else hDbc->hDbcExtras->hServer = msqlConnect( szHOST ); if ( hDbc->hDbcExtras->hServer < 0 ) { sprintf( hDbc->szSqlMsg, "SQL_ERROR %s", msqlErrMsg ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); sprintf( hDbc->szSqlMsg, "SQL_ERROR Failed to connect to (%s)", szHOST ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); return SQL_ERROR; } hDbc->bConnected = 1; /* SET DATABASE */ if ( szDATABASE[0] != '\0' ) { if ( msqlSelectDB( hDbc->hDbcExtras->hServer, szDATABASE ) == -1 ) { sprintf( hDbc->szSqlMsg, "SQL_WARNING %s", msqlErrMsg ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); sprintf( hDbc->szSqlMsg, "SQL_WARNING Connected to server but failed to use database (%s)", szDATABASE ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); } else { sprintf( hDbc->szSqlMsg, "SQL_INFO DATABASE=%s", szDATABASE ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); } } logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; }