スマートフォンアプリ作成

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ウェブアプリで使用していたSqliteデータベースをiOSで使う方法

lamp環境などのウェブアプリで使用していたSqliteデータベースをiOSで使いたいという場合がある。

Sqliteデータベースに入っているデータをそのまま使いたいという場合などがそれにあたる。

ウェブアプリで使っていた xxx.sqlite ファイルをxcodeプロジェクトに追加しただけでは操作できないのだ。

その場合の解決方法は次の通りだ。

その前に、なぜsqliteファイルを操作できないのかというとiOSでSqliteを扱う場合には、CoreDataという仕組みを使ってプログラムからデータベースを操作することになるため、CoreDataの仕様に合わせる必要がある。

CoreData用のSqliteは、通常のSqliteと異なる部分がある。

1. テーブル名とカラム名のプレフィックスとして「Z」を先頭につける必要があること。

2. Z_ENT, Z_OPT という2つのカラムが各テーブルに必要となること。

-

既存のSqliteファイルをiOSで使うためには、この変換をする必要があるのだ。

具体的には

1. Xcodeプロジェクト作成時にCoreDataを使うをチェックする。

これを行うことで、CoreDataスタックと呼ばれるCoreDataを使うためのメソッドが準備される。

2. xxx.xcdatamodel にテーブルスキーマを定義する。

スキーマ定義ではカラム名やテーブル名にはZプレフィックスは付けない。

3. 既存のSqliteファイルをプロジェクトに追加する。

4. CoreDataスタック中に記述されているSqliteファイル名とxcdatamodelファイル名をプロジェクトに存在しているファイル名に合わせる。

5. プロジェクトの.plist に Application supports iTunes file sharing YES を定義する。

6. iPhoneをUSB接続し、プロジェクトを一度実行し、SqliteファイルにCoreData用テーブルを作成する。

テーブル名とカラム名の先頭にZがついて、Z_ENT, Z_OPT カラムが追加されたテーブルが作成されている。

7. itunesのデバイス画面中のアプリ画面からsqliteファイルを取得する。(コンピュータに保存する。)

8. ターミナルを起動し、sqlite3 xxx.sqlite を実行する。

プロジェクトフォルダを直接操作せず、事前に作業用フォルダにsqliteファイルをコピーしておく。

9. 既存のテーブルからCoreData用のテーブルにデータをコピーする。

ZなしからZありテーブルへコピーする。

insert文はメモ帳で作成してからコピぺした方が良い。

例:

既存テーブル名:table

CoreData用テーブル:Ztable

insert into Ztable (zcolumnA, zcolumnB) select columnA, columnB from table;

\* 大文字小文字は区別されない。

10. 次のsql文を実行して正常にコピーされたことを確認する。

select * from Ztable;

11. .q と入力しsqliteを終了する。

12. Finderで、プロジェクトフォルダのsqliteファイルをsqlite3コマンドで変更したもので上書きコピーする。

これでCoreDataから既存のSqliteファイルを扱えるようになる。

2018年2月
    123
45678910
11121314151617
18192021222324
25262728   
android
iOS
アプリの著作権
スマートコントラクト/ブロックチェーン/暗号通貨
日本のなりたち

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版
スマートフォンアプリ作成