1

これは以前に尋ねられたことを知っており、解決策を実装しようとしましたが、ps->executeUpdate() を呼び出すと例外エラーが発生します。誰かが明確な例を持っていますか?

4

3 に答える 3

0

このコードは私にとってはうまく機能します:


  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(); 

それが役立つことを願っています...JaroslavPribyl

于 2010-05-16T20:43:52.277 に答える
0

申し訳ありませんが、Matthew - この質問に対する以前の回答 (elrohin による) を仮定しました。そう答えるしかなかったのかもしれません。とにかく、彼が提案したコードは次のとおりです。

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

最新の (ベータ) コネクタ/cpp デバッグ ライブラリで VS9 を使用しています。また、文字列の代わりに char* を使用してみました。

于 2009-07-10T15:34:09.663 に答える