クライアント/サーバーアプリケーションを作成しようとしていますが、サーバーアプリケーションで問題が発生しました。私は、クライアントアプリケーションから複数の変数を含む構造体をサーバアプリケーションが受け入れるようにして、これらの変数値を "INSERT INTO" psql文の中で使用します。しかし、タイトルが示唆するように、私はこれをコード化する方法に問題があります。CのPQexecParams()で複数の変数を使用する方法
struct PersonInfo* buffer = (struct PersonInfo*)malloc(sizeof(struct
PersonInfo));
recv(serv_sock_accept, buffer, sizeof(buffer), 0);
//**Connection to database using PGconn (PGconn connection)**
PGresult* res = PQexecParams(connection,
"INSERT INTO person(first_name, last_name, age) VALUES($1, $2, $3)",
3,
NULL,
buffer->person.fname, buffer->person.lname, buffer->age,
NULL,
NULL,
0);
私はこの上で複数の値を宣言することができないと信じて私をリードして、私は私の変数の値を宣言行にコンパイルエラーを得続ける:以下、あなたは私のコードの関連部分を見つけるだろうPQexecParams()関数の行。私は自分のやり方が間違っていると感じているので、あなた方は私に正しい方向を向けることができますか? 1つのPQexecParams()ステートメントのValue行に複数の値を宣言することは可能ですか? 3つの値をPQexecParams()ステートメントに分割すると、データベースは1つではなく3つの別々のエントリを作成します。
ありがとう、皆さんがこれまで私に提供してくれたすべての助けに感謝します!
あなたのご意見をありがとうございました。本当にありがとうございます。私があなたが言及したことを試みたが、 "char * values [3]"として値を宣言すると、 "互換性のないポインタ型、値から引数 '5を' PQexecParams 'を渡すというコンパイラの警告が出る。しかし、 "const char * values [3]"という値を宣言しても、コンパイラの警告は表示されません。しかし、クライアントアプリケーションからサーバーを呼び出すと、psqlステートメントは実行されません。何か案は? –
エラー行全体は何ですか?通常、互換性のないポインタエラーは、期待しているものとそれが何であるかを教えてくれるでしょう。 –
"期待値 'const char * const *'しかし引数は 'char **' extern PGresult * PQexecParams(PGconn * conn) –