質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
FMDB

FMDBは、SQLiteをObjective-Cから扱いやすくするためのラッパーライブラリです。GitHubで公開されており、SQLite暗号化ライブラリのSQLCipherにも対応。Swiftの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2788閲覧

FMDBでのテーブルの列数の取得

_show

総合スコア10

FMDB

FMDBは、SQLiteをObjective-Cから扱いやすくするためのラッパーライブラリです。GitHubで公開されており、SQLite暗号化ライブラリのSQLCipherにも対応。Swiftの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/06/17 04:01

Swift2.2 Xcode7.3でプログラムを組んでいます。

FMDBを使って、テーブルの行数(レコード数)を取得する方法は色々なサイトで書かれているのですが、列の数(カラム数)を取得する方法が載っているところが見つからず、苦戦しています。できれば数字を直打ちせず、プログラミングで列数を数えさせたいのです。

もし、わかる方がいらっしゃれば助けていただけるとありがたいです。

下にテーブルの行数を取得した時のコードを書いておきます。よろしくお願いします。

Swift

1let dbfile = "XXX.db" 2let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 3let libDir = paths[0] as String 4let dbPath = libDir.stringByAppendingPathComponent(dbfile) 5 6let checkDB:Bool = NSFileManager.defaultManager().fileExistsAtPath(dbPath) 7 8if checkDB == false {//ファイルがない場合はコピー 9 let defaltDBPath :String = (NSBundle.mainBundle().resourcePath! as NSString).stringByAppendingPathComponent(dbfile) 10 try! NSFileManager.defaultManager().copyItemAtPath(defaltDBPath, toPath: dbPath) 11 if checkDB == false {//Errorの場合 12 print("Copy error = " + defaltDBPath) 13 } 14} else {//ファイルがある 15 print("DB file OK") 16} 17 18let db = FMDatabase(path: dbPath) 19let selectSql = "SELECT count(*) from tableName" 20 21db.open() 22 23let result = db.executeQuery(selectSql, withArgumentsInArray: nil) 24var dbRowCount:Int = 0 25if result.next() { 26 dbRowCount = Int(result.intForColumn("count(*)")) 27} 28 29db.close() 30 31print("dbRowCount = \(dbRowCount)") 32

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

はじめまして。
気になったので試してみましたが、以下で取得できました。

// 参考: http://o.inchiki.jp/obbr/4 db.executeQuery(sql: "PRAGMA TABLE_INFO(テーブル名)", binds: nil).count;

FMDBの中身は要はSQLiteなので、困った時は SQLite の構文を駆使されると良いのではないかと思います。

投稿2016/06/17 04:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問