Ich weiß, dies wurde zuvor gefragt, und ich habe versucht, die Lösung zu implementieren, aber ich bekomme Ausnahmefehler, wenn ich ps-> ExecuteUpdate() aufrufen. Hat jemand ein explizites Beispiel?Wie setze ich Binärdaten mit setBlob() in C++ - Connector
Antwort
Sorry Matthew - Ich nahm die vorherige Antwort auf diese Frage (von Elrohin). Vielleicht hätte ich darauf antworten sollen. Wie dem auch sei heres den Code, schlug er vor:
class DataBuf : public streambuf
{
public:
DataBuf(char * d, size_t s) {
setg(d, d, d + s);
}
};
// prepare sql update statement etc. and set the data pointer
string* pData = ; // ...not part of the original answer
DataBuf buffer((char*)pData->data(), pData->length());
istream stream(&buffer);
ps->setBlob(1, &stream);
ps->executeUpdate(); // This causes an exception in free.c
Ich verwende VS9 mit den neuesten (beta) Anschluss/cav Debug-Libs. Ich habe auch versucht, Char * anstelle von String zu verwenden.
Wenn eine Ausnahme in free.c ausgelöst wird, bedeutet das, dass mit dem Speicher schlimme Dinge passiert sind. Ich schaue gerade auf diesen Char Cast. – Puppy
Dieser Code funktioniert gut für mich:
Driver *driver;
Connection *conn;
driver = get_driver_instance();
conn = driver->connect("tcp://127.0.0.1:3306", "root", "root");
std::auto_ptr use_stmt(conn->createStatement());
use_stmt->execute("USE world");
std::auto_ptr stmt(conn->prepareStatement("INSERT INTO terrain_texture_tiles_0 (data) VALUES(?)"));
std::string value("A\0B", sizeof("A\0B") - 1);
std::istringstream tmp_blob(value);
stmt->setBlob(1, &tmp_blob);
stmt->execute();
hoffe, es hilft ... Jaroslav Pribyl
Dieser Beitrag ist ein bisschen alt, aber ich über die gleiche Frage lief. Ich habe die obige Methode angewendet und es hat nicht ganz richtig für meinen Fall funktioniert, der versuchte, einen Vektor zu nehmen und diesen für den Stream zu verwenden. Was ich tat, war, eine UUID zu nehmen und sie in eine 16-Byte-Binärversion umzuwandeln, um sie in der Tabelle zu verwenden. Mit der obigen Methode habe ich festgestellt, dass nur die Hälfte meines Puffers gefüllt wurde.
Ich endete mit einem stringstream
.
std::vector<unsigned char> convertedId;
std::stringstream stream;
// convertedId has been populated with the 16 byte binary version
stream = std::stringstream(std::string(convertedId.begin(), convertedId.end()));
// Parameter 1 is BINARY(16)
pStatement->setBlob(1, &stream);
Ein paar andere Dinge zu beachten. Auf den Stream wird erst zugegriffen, wenn eine der execute
-Varianten aufgerufen wird. Sie müssen also den Stream so lange halten, bis Sie execute
ausgeführt haben.
Hoffentlich hilft dies jemandem und spart ihnen Zeit.
- 1. Set Binärdaten setblob in MySQL Connector/C++ Absturz verursacht
- 2. Wie verwende ich MySQL C++ Connector zum Speichern binärer Daten?
- 3. wie Abfrage mit mysql C++ Connector einfügen
- 4. Wie sende ich Binärdaten mit socket.io?
- 5. Wie setze ich ein Bind in C#
- 6. Wie setze ich projektweit #define in C#
- 7. Wie setze ich Standard-Browser in Windows 8 mit C#?
- 8. Wie setze ich User Agent mit System.Net.WebRequest in C#
- 9. SEGFAULT Ergebnisse mit MySQL/C++ Connector erhalten
- 10. MySQL C++ Connector: Wie bekomme ich die Thread/Verbindungs-ID?
- 11. Wie installiere ich MySQL Connector/C unter Mac OS X?
- 12. MySQL Connector C++ - ungültiger Zeiger
- 13. Wie setze ich mfc C++ editbox wiederholt?
- 14. Lesen von Binärdaten in std :: string C++
- 15. Wie setze ich Linux/Mac Computer Uhr mit C#/Mono?
- 16. Lese Binärdaten mit Header von C in Python
- 17. Wie setze ich die Umgebungsvariable Pfad mit C#
- 18. Wie setze ich ein Zeichen in einer Struktur in C?
- 19. Escaping-Werte in SQL-Abfragen (C# mit SQL-Connector)
- 20. Suchen Zeichenfolge in Binärdaten
- 21. Wie setze ich eine Datenbank in das Projekt? C#
- 22. Wie setze ich die Mauszeigerposition in C auf Linux?
- 23. Wie setze ich den Cookie-Ablauf auf Sitzung in C#
- 24. C# Wie setze ich den Standardwert einer Zeichenkettensammlung in Design
- 25. Wie setze ich einen Timer in C# zurück?
- 26. Problem mit Twisted Python - Senden von Binärdaten
- 27. Wie setze ich einen nicht initialisierten Wert in Objective C?
- 28. Wie installiere ich mysql-connector via pip
- 29. Ich brauche Beispielcode für C++ - Connector zum Festlegen von "mysql_options"
- 30. Wie lese ich Binärdaten aus dem Socket mit Apache MINA?
"und ich habe versucht, die Lösung zu implementieren" Wie sollen wir wissen, was Sie versucht haben, wenn Sie keinen Code posten? Es würde auch helfen zu wissen, welche Tutorials/Beispiele du verwendest. –