Changeset 3166 for trunk/archive/psdb/psDB.c
- Timestamp:
- Feb 8, 2005, 3:15:39 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/archive/psdb/psDB.c (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/psdb/psDB.c
r3157 r3166 8 8 * @author Joshua Hoblitt 9 9 * 10 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $11 * @date $Date: 2005-02-0 8 05:03:09 $10 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2005-02-09 01:15:39 $ 12 12 * 13 13 * Copyright 2005 Joshua Hoblitt, University of Hawaii … … 68 68 69 69 mysql = mysql_init(NULL); 70 if (!mysql) { 71 // call abort? 72 fprintf(stderr, " mysql_init(), out of memory\n"); 73 74 return NULL; 75 } 76 70 77 if (!mysql_real_connect(mysql, host, user, passwd, dbname, 0, NULL, 0)) { 71 78 fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(mysql)); … … 181 188 { 182 189 MYSQL_RES *result; // complete db result set 183 MYSQL_ROW row; 184 char *query; 190 MYSQL_ROW row; // single row of db result set 191 char *query; // SQL query 185 192 psU64 rowCount; // number of rows in db result set 186 193 psU64 dataSize; // size of field … … 334 341 { 335 342 MYSQL_RES *result; // complete db result set 336 MYSQL_ROW row; 343 MYSQL_ROW row; // single row of db result set 337 344 MYSQL_FIELD *field; // field type info 338 char *query; 345 char *query; // SQL query 339 346 psU64 rowCount; // number of rows in db result set 340 347 psU64 fieldCount; // number of fields in db result set … … 344 351 psMetadataItem *item; // field of a row 345 352 psMetadata *md; // a row 346 psHash *mysqlToSQLTable; 347 psHash *sqlToPSTable; 348 char *key; 349 char *value; 353 psHash *mysqlToSQLTable; // type lookup table 354 psHash *sqlToPSTable; // type lookup table 355 char *key; // hash tmp value 356 char *value; // hash tmp value 350 357 psU32 pType; // psElemType of a field 351 358 psU32 type; // psMetadataType of a a field 352 char *sqlType; 359 char *sqlType; // copy of lookup table result 353 360 psPtr data; // copy of result field 354 361 … … 458 465 } 459 466 460 bool psDBInsert Row(psDB *dbh, const char *tableName, psMetadata *row)461 { 462 char *query; 467 bool psDBInsertOneRow(psDB *dbh, const char *tableName, psMetadata *row) 468 { 469 char *query; // SQL query 463 470 MYSQL_STMT *stmt; // prepared db statement 464 471 MYSQL_BIND *bind; // field values to insert 465 psU32 paramCount; 466 psHash *mysqlFieldType; 467 mysqlType *mType; 468 char *key; 469 psMetadataItem *item; 470 psListIterator *cursor; 471 psU32 i; 472 bool isNull = true; 472 psU32 paramCount; // number of placeholders in query 473 psHash *mysqlFieldType; // type lookup table 474 mysqlType *mType; // type tmp variable 475 char *key; // hash tmp variable 476 psMetadataItem *item; // field in row 477 psListIterator *cursor; // row iterator 478 psU32 i; // field index 479 bool isNull = true; // used in a MYSQL_BIND to indicate NULL 473 480 474 481 query = psDBGenerateInsertRowSQL(tableName, row); … … 493 500 return false; 494 501 } 502 503 psFree(query); 495 504 496 505 paramCount = (psU32)mysql_stmt_param_count(stmt); … … 514 523 bind[i].is_unsigned = mType->isUnsigned; 515 524 525 // convert NaNs to NULL 516 526 bind[i].is_null = psDBIsPTypeNaN(item->pType, item->data.V) 517 527 ? (my_bool *)&isNull … … 531 541 } 532 542 533 if (!cursor->offEnd) { 534 // + , + _ 535 psStringAppend(&query, ", "); 536 } 537 543 // increment field index 538 544 i++; 539 545 } … … 546 552 psFree(bind); 547 553 mysql_stmt_close(stmt); 548 psFree(query);549 554 550 555 return false; … … 556 561 psFree(bind); 557 562 mysql_stmt_close(stmt); 558 psFree(query);559 563 560 564 return false; … … 566 570 psFree(bind); 567 571 mysql_stmt_close(stmt); 568 psFree(query);569 572 570 573 return true; … … 593 596 psStringAppend(&query, item->name); 594 597 598 // + , + _ between every field name 595 599 if (!cursor->offEnd) { 596 // + , + _597 600 psStringAppend(&query, ", "); 598 601 } … … 604 607 psListIteratorSet(cursor, 0); 605 608 606 // create fieldplace holders609 // create value place holders 607 610 while ((item = psListGetNext(cursor))) { 608 611 psStringAppend(&query, "?"); … … 616 619 psFree(cursor); 617 620 621 // end of values 618 622 psStringAppend(&query, ")"); 619 623 … … 666 670 static char *psDBGenerateCreateTableSQL(const char *tableName, psMetadata *table) 667 671 { 668 psMetadataItem *item; 669 psListIterator *cursor; 670 psHash *colType; 671 char *query; 672 char *key; 673 char *value; 672 psMetadataItem *item; // column description 673 psListIterator *cursor; // column iterator 674 psHash *colType; // type lookup table 675 char *query; // complete query 676 char *key; // hash tmp variable 677 char *value; // hash tmp variable 674 678 675 679 // init query with a psMemBlock … … 751 755 psStringAppend(&query, tableName); 752 756 757 // treat limit == 0 as "no limit" 753 758 if (limit) { 754 759 psStringAppend(&query, " LIMIT "); … … 986 991 size_t newSize; 987 992 char *oldDest; 988 989 993 990 994 // dest + source + \0
Note:
See TracChangeset
for help on using the changeset viewer.
