0

postgresデータベースとの次の相互作用を考慮してください。

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("acidalia");
db.setDatabaseName("customdb");
db.setUserName("mojito");
db.setPassword("J0a1m8");
bool ok = db.open();
QSqlQuery query(db);

QSqlQuery query(db);

QVector<int> byteArray(2); 
byteArray[0] = 0;
byteArray[1] = 7;

QVariant v = QVariant::fromValue(byteArray); 

cout << "dropping a table: " << query.exec("drop table aaa;") << endl; //gives 1
cout << "creating a table: " << query.exec("create table aaa (gid integer, pos integer[])") << endl; // gives 0
query.prepare("INSERT INTO aaa (gid) VALUES (:gid, :pos)");
query.bindValue(0, 1);
query.bindValue(1, v);
cout << "inserting: " << query.exec() << endl; // gives 0 :-(

もちろん、それを行う1つの方法は、手動で作成されたsqlステートメントを使用してデータを送信し、サーバー上で通常のクエリとしてクエリを実行することです(バイト配列は文字列として挿入されます)が、私は探していますやや良い解決策。

4

1 に答える 1

1

INSERTには3つの宛先列が宣言されていますが、4つのバインド値があります。

query.prepare( "INSERT INTO geo(gid、bboxx、bboxy)" "VALUES(:gid、:bboxx、:bboxy、:pos)");

bboxyの後にbyteaカラムを追加すると、これは機能するはずです。

于 2012-10-25T13:25:48.807 に答える