2012-07-25 51 views
1

我是PostgreSQL數據庫的新手。我的visual C++應用程序需要做的是創建多個表並從它們添加/檢索數據。用於創建,列出和刪除數據庫的libpq代碼(C++/VC++,PostgreSQL)

我的應用程序的每個會話都應該創建一個新的不同的數據庫。我可以將當​​前的日期和時間用於唯一的數據庫名稱。

還應該有一個選項來刪除所有的數據庫。

我已經計算出如何連接到數據庫,創建表格並向表格添加數據。我不確定如何爲每次運行創建一個新數據庫,或者如果用戶想要清除所有數據庫,如何檢索數據庫的名稱和數量。

請幫忙。

+0

請更具體一些。 PostgreSQL版本?你如何連接到PostgreSQL - 通過ODBC,ADO,本地libpq,libpqtypes/libpqxx,Npgsql,NHibernate,什麼? – 2012-07-25 13:47:29

+0

會使用像9.1.4.1這樣的最新版本。我將使用libpq進行連接。 – Garfield 2012-07-25 15:50:43

+0

如果您知道如何使用libpq發佈CREATE TABLE,則可以基於幾乎相同的代碼來執行CREATE DATABASE。 – 2012-07-25 18:03:21

回答

3

查看libpq examples in the documentation。示例程序向您展示瞭如何列出數據庫以及如何針對數據庫執行命令。這裏的示例代碼很適合創建和刪除數據庫。

創建數據庫是一種簡單的CREATE DATABASE SQL語句,與任何其他libpq操作相同。您必須連接到臨時數據庫(通常爲template1)才能發出CREATE DATABASE,然後斷開連接,並與剛創建的數據庫建立新連接。

不是創建新的數據庫,而是考慮創建新的schema。由於您只需更改search_path或爲表引用添加前綴,因此您不必斷開連接並重新連接以更改模式。見the documentation on schemas

雖然我質疑你的設計的智慧。對於應用程序來說,創建和刪除數據庫(或臨時表以外的表)作爲其操作的正常部分很少是一個好主意。也許如果你詳細說明了爲什麼你想這樣做,我們可以想出解決方案,可能比你現在的方法更容易和/或表現更好。

+0

我的應用程序的每次執行都需要很少(7-8)個表。在每次執行時,都應創建一組新的表。舊桌子應該堅持到用戶需要。現在,爲了在每次執行時創建一組不同的表格,我認爲使用時間戳創建不同的數據庫可以幫助我。 而且,如果用戶選擇刪除舊錶格,我可以輕鬆刪除所有將刪除所有表格的數據庫。在爲當前會話創建新的之前。 – Garfield 2012-07-26 05:36:18

+0

另外,你給我的鏈接,給出創建表的例子。沒有找到關於創建數據庫的任何信息也許我是新手,所以不知道確切的命令/語法。 – Garfield 2012-07-26 05:38:13

+0

@Garfield第二個鏈接是「CREATE DATABASE」命令語法。這是一個普通的SQL命令,所以你可以在'PQexec'調用中使用它。您必須連接到像'template1'這樣的數據庫才能發出'CREATE DATABASE',然後斷開連接,並建立到新數據庫的新連接以使用它。 – 2012-07-26 08:30:07