概要
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