src/SqlHandler.h
branchv_0
changeset 4 925b15fb5c63
parent 3 0b932e05aa9f
child 5 cbc7817a3346
equal deleted inserted replaced
3:0b932e05aa9f 4:925b15fb5c63
    85 	}
    85 	}
    86 
    86 
    87 	// TODO: sqlite3_column_type
    87 	// TODO: sqlite3_column_type
    88 
    88 
    89 	std::string getString(int columnIndex) {
    89 	std::string getString(int columnIndex) {
    90 		return (char *) sqlite3_column_text(stmt, columnIndex);
    90 		const char* value = (const char*) sqlite3_column_text(stmt, columnIndex);
       
    91 		return value ? value : ""; // TODO: support NULL values (when supported in relpipe format)
    91 	}
    92 	}
    92 
    93 
    93 };
    94 };
    94 
    95 
    95 class Connection {
    96 class Connection {
   130 
   131 
   131 		for (int i = 0; i < parameterCount; i++) {
   132 		for (int i = 0; i < parameterCount; i++) {
   132 			prepared.setString(i + 1, convertor.to_bytes(statement.parameters[i].value));
   133 			prepared.setString(i + 1, convertor.to_bytes(statement.parameters[i].value));
   133 		}
   134 		}
   134 
   135 
   135 		for (int i = 0; i < columnCount; i++) {
   136 		std::vector<relpipe::writer::AttributeMetadata> metadata;
   136 			printf("column %d ~ %s\n", i, prepared.getColumName(i).c_str());
   137 		for (int i = 0; i < columnCount; i++) metadata.push_back({convertor.from_bytes(prepared.getColumName(i).c_str()), relpipe::writer::TypeId::STRING});
   137 		}
   138 		relationalWriter->startRelation(statement.relation, metadata, true);
   138 
   139 
   139 		while (prepared.next()) {
   140 		while (prepared.next()) {
   140 			for (int i = 0; i < columnCount; i++) {
   141 			for (int i = 0; i < columnCount; i++) {
   141 				printf("column %d ~ %s = %s\n", i, prepared.getColumName(i).c_str(), prepared.getString(i).c_str());
   142 				relationalWriter->writeAttribute(convertor.from_bytes(prepared.getString(i)));
   142 			}
   143 			}
   143 		}
   144 		}
   144 	}
   145 	}
   145 
   146 
   146 public:
   147 public: