LoginSignup
7
6

More than 5 years have passed since last update.

Swift で PostgreSQL を使う。(OSX)

Last updated at Posted at 2016-12-20

概要

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 )

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6