概要
Swift で PostgreSQL を使うための最も基本的なサンプル。
OSX 向けの記事です。iOS 向けではありません。
前準備
libpq のインストール
PostgreSQL を扱う Swift で書かれたライブラリは執筆時点で存在しないと思われます。
なので、本家の C ベースの libpq をインストールしてこれ経由でアクセスします。
Homebrew でインストールすることをベースに話を進めますが、Homebrew のインストールとかアップデートについては他にたくさんページがあるので割愛します。
インストール方法;
libpq は普通に PostgreSQL についてきます。なので、PostgreSQL をインストールします。
brew install PostgreSQL
Xcode の設定
Build Settings
OSX アプリケーションを Swift で作ったら、Build Settings で以下の指定を行います。
- Header Search Path
- /usr/local/include/
TARGETS / General
Linked Frameworks and Libraries に libpq.tbd を加えます。
ブリッジングヘッダー
ブリッジングヘッダーを作成し、以下の内容を記述します。
#include <libpq-fe.h>
(ブリッジングヘッダーは新規に Cocoa Class のファイルを Objective-C で作成すれば、XCodeが自動的に作成して、Build Setting にセットしてくれる。)
簡単なクエリの結果を表示する例
import Foundation
let wC = PQconnectdb( "host=TheHost port=ThePort user=TheUser password=ThePassword" );
guard PQstatus( wC ) == CONNECTION_OK else { NSLog( "%@", String( cString: PQerrorMessage( wC ) ) ); return }
defer { PQfinish( wC ) }
let wR = PQexec( wC, "select * from TheTable" )
guard PQresultStatus( wR ) == PGRES_TUPLES_OK else { NSLog( "%@", String( cString: PQerrorMessage( wC ) ) ); return }
let wNumTuples = PQntuples( wR )
let wNumFields = PQnfields( wR )
for i in 0 ..< wNumTuples {
for j in 0 ..< wNumFields {
print( String( cString: PQgetvalue( wR, i, j ) ) )
}
}
PQclear( wR )