我正在嘗試創建客戶端/服務器應用程序,但是我在服務器應用程序中遇到了一個問題。我希望服務器應用程序接受來自客戶端應用程序的包含多個變量的結構,然後在「INSERT INTO」psql語句中使用這些變量值。但是,正如標題所示,我對如何編寫代碼存在問題。下面,你會發現我的代碼的相關部分:如何在PQexecParams()中使用多個變量C
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()函數的一行。我覺得我的方式是錯誤的,所以請你們指點我正確的方向?是否可以在一個PQexecParams()語句中的Value行上聲明多個值?如果我將三個值分解爲他們自己的PQexecParams()語句,數據庫將創建三個單獨的條目,而不是一個。
非常感謝您爲我們提供的所有幫助!
嗨,非常感謝您的意見,我非常感謝。我試着做你提到的,但是如果我將值聲明爲「char * values [3]」,我得到一個編譯器警告,聲明「從不兼容的指針類型值中傳遞'PQexecParams'的參數5」。但是,如果我將值聲明爲「const char * values [3]」,則不會收到編譯器警告,並且編譯得很好。但是當我從客戶端應用程序調用服務器時,psql語句不會執行。有任何想法嗎? –
什麼是整個錯誤行,通常是不兼容的指針錯誤告訴你它期望什麼,它得到了什麼 –
「note:expected'const char * const *'但參數的類型是'char **'extern PGresult * PQexecParams(PGconn *康恩) –