2013-05-11 59 views
2

我建立在Visual Studio 2012的應用程序,這是我想在每次運行檢查,如果一定Postgres數據庫存在與時間如果沒有則創建一個,將指定表等創建PostgreSQL數據庫編程

我在谷歌環顧四周沒有運氣。我希望數據庫能夠以編程方式在我的應用程序中創建,但是如果有人知道是否以及如何使用安裝程序嚮導來做到這一點,那也不錯。該應用程序旨在僅在Windows上運行,但在所有機器上均無例外情況。

+0

我不相信這應該是closevoted和大多數的名稱是不相似的,所以我會說他們來自[標籤:visual-studio]標籤。追隨者。提名重新開放,雖然老實說,這與視覺工作室沒有任何關係,所以我刪除了標籤。 – 2013-05-12 23:54:21

+0

是的,謝謝你的所作所爲。我不確定我瞭解「closevoted」是什麼,因爲我對stackoverflow論壇很陌生。但是,以任何方式感謝您的貢獻! :) – 2013-05-13 14:36:43

回答

4

不管的工具和編程語言中使用,你會想使用這個方法是一樣的:

  1. 在你的程序,在啓動過程中連接到template1postgres數據庫that're總是在PostgreSQL安裝中可用併發出SELECT 1 FROM pg_database WHERE datname = ?,並且第一個參數傳遞所需的數據庫名稱。

  2. 檢查返回的結果集。如果一行被返回,那麼數據庫就存在了,你就完成了,不需要進一步的操作。如果沒有返回行,則數據庫不存在,則需要創建它,所以:

  3. 問題與任何所需的選項CREATE DATABASE mydatabasename;OWNERENCODING等每手動創建數據庫自身。新的數據庫將是空的。

  4. 通過連接到新的數據庫在應用程序和發送SQL序列填充數據庫命令,直接從您的應用程序,或通過在外殼調用psql命令來讀取一個sql腳本文件併發送至數據庫。我通常寧願直接在我的應用程序中運行SQL。

如果您不是要創建的數據庫中安裝這主要是取決於你和你的安裝程序,但作爲PostgreSQL的後CREATE DATABASE通話開始,然後喂psql一個srcipt它通常會是簡單。

+0

非常感謝!我會嘗試這是非常有幫助和清楚的! – 2013-05-12 13:13:34

+0

@GeorgeElementSotiriou很高興爲您提供幫助。 PostgreSQL是一個用於嵌入應用程序的OK數據庫,但請*使您的應用程序將PostgreSQL的副本安裝在非默認端口(即:不是5432),服務帳戶和數據庫位置,以便它不與任何PostgreSQL用戶衝突可能會自行安裝。你的安裝程序應該創建自己的服務,或者你的應用程序應該使用'pg_ctl'來根據需要啓動/停止PostgreSQL。 – 2013-05-12 23:56:20

+0

在我的情況下(使用Postgres 9.3的perl)我必須在創建數據庫之前以用戶'postgres'連接到數據庫'postgres'。 – 2014-09-18 12:50:52