LoginSignup
11
12

More than 5 years have passed since last update.

Swift で MySQL を使う。(OSX)

Last updated at Posted at 2016-04-13

概要

Swift で MySQL を使うための最も基本的なサンプル。
OSX 向けの記事です。iOS 向けではありません。

前準備

mysqlclient のインストール

MySQL を扱う Swift で書かれたライブラリは執筆時点で存在しないと思われます。
なので、本家の C ベースの mysqlclient をインストールしてこれ経由でアクセスします。
Homebrew でインストールすることをベースに話を進めますが、Homebrew のインストールとかアップデートについては他にたくさんページがあるので割愛します。

インストール方法;
mysqlclient は普通に mysql についてきます。なので、mysql をインストールします。

brew install mysql

Xcode の設定

Build Settings

OSX アプリケーションを Swift で作ったら、Build Settings で以下の指定を行います。

  • Header Search Path
    • /usr/local/include/mysql
  • Library Search Path

    • /usr/local/lib
  • Other Linker Flags

    • -lmysqlclient

ブリッジングヘッダー

ブリッジングヘッダーを作成し、以下の内容を記述します。

    #include    <mysql.h>

(ブリッジングヘッダーは新規に Cocoa Class のファイルを Objective-C で作成すれば、XCodeが自動的に作成して、Build Setting にセットしてくれる。)

簡単なクエリの結果を表示する例


import Foundation

let wMySQL = mysql_real_connect(
    mysql_init( nil )
,   "127.0.0.1"
,   "root"
,   "root"
,   "information_schema"
,   8889    //  8889 is MAMP's Default, 0 for 3306
,   nil
,   0
)

let wSQL = "select TABLE_NAME, COLUMN_NAME from COLUMNS limit 10"
guard mysql_real_query( wMySQL, wSQL, UInt( wSQL.utf8.count ) ) == 0 else { fatalError() }
let wResult = mysql_use_result( wMySQL );

while true {
    let wRow = mysql_fetch_row( wResult )
    if wRow == nil { break }
    NSLog( "%s %s", wRow[ 0 ], wRow[ 1 ] );
}

Command Line Tool を作成して、その main.swift の内容を上のようにすると、以下のように出力されます。必要に応じてポートは変更してください。上の例では MAMP のデフォルトの 8889 を指定しています。

2016-04-13 11:40:22.354 SwiftCUI[48941:6000289] CHARACTER_SETS CHARACTER_SET_NAME
2016-04-13 11:40:22.354 SwiftCUI[48941:6000289] CHARACTER_SETS DEFAULT_COLLATE_NAME
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] CHARACTER_SETS DESCRIPTION
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] CHARACTER_SETS MAXLEN
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS COLLATION_NAME
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS CHARACTER_SET_NAME
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS ID
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS IS_DEFAULT
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS IS_COMPILED
2016-04-13 11:40:22.355 SwiftCUI[48941:6000289] COLLATIONS SORTLEN
11
12
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
11
12