FMDBでno such columnのエラー

このQ&Aのポイント
  • ObjectiveCを用いてiPhoneアプリ製作の勉強をしています。
  • ViewController上に設置したボタンを押すと、データをINSERTするようになっていますが、エラーが表示されてしまうため、データの保存とログの表示ができません。
  • どのようにしたら、エラーを回避し、データの保存とログ表示をできるようにできるでしょうか?
回答を見る
  • ベストアンサー

FMDBでno such columnのエラー

ObjectiveCを用いてiPhoneアプリ製作の勉強をしています。 ■[objective-C][iPhone]Objective-Cで簡単にsqliteが使えるFMDBについて調べてみた http://grandbig.github.io/blog/2013/11/30/fmdatabase/ 上のサイトを参考にして、以下のようにコードを書きました。 構造として、ViewController上に設置したボタンを押すと、dataMakeメソッドが実行されてデータをINSERTするようになっています。 しかし、ボタンを押してdataMakeメソッドが実行された時に、DB Error: 1 "no such column : user01"というエラーが表示されてしまい、dataOpenメソッドのNSLogが表示されませんでした。 なので、dataOpenメソッドが実行されているのか、どうなのか分かりません。 データベースは確認したところ、作成されていました。しかし、入力したデータが保存されているかはわかりません。 どのようにしたら、エラーを回避し、データをLog表示して確認できるでしょうか? 試しにUPDATEの処理をdataMakeメソッドに書いてみましたが、こちらはログに何も表示されず、無反応でした。(一応コメントアウトして残してあります。) ※ヘッダファイルは編集していません。 ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4952372.txt

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

iPhoneじゃなくてAndroid開発の情報ですが、同じSQLiteを使っている 以下の情報が参考になると思います。 http://notebook-t-0731.hatenablog.com/entry/2013/05/23/173308 SQL文に直接文字列を指定するにはシングルクォートで囲まなければ ならないはずです。 あなたが参考にされているサンプルはちょっといい加減な気がします。 @"INSERT INTO users(uid, createtime) VALUES(%@, %@)" を @"INSERT INTO users(uid, createtime) VALUES('%@', '%@')" にすれば、たぶんいけるんじゃないかと思います。 または、前回参考にされたURLにあったように NSString *insert = @"INSERT INTO users(uid, createtime) VALUES(?, ?)"; [db executeUpdate:insert, uid, createtime]; としてもいいと思います。

ifonesapp
質問者

お礼

ありがとうございます! エラーも出ず無事にLogを表示することができました!

関連するQ&A

  • 画面遷移したVCから戻る時に元のVCにデータを渡す

    ObjectiveCを用いてiPhoneアプリ製作の勉強をしています。 ViewController上に設置したボタンで接続したTableViewControllerのセルをタッチしたとき、 そのセルの情報を元のViewControllerのラベルに表示するという処理を組みたいのですが、うまく行きません。 こちらのサイトを参考にしています。 http://kikuchy.hatenablog.com/entry/2013/11/04/Segue_%E3%81%A7%E7%94%BB%E9%9D%A2%E9%81%B7%E7%A7%BB%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E6%B8%A1%E3%81%97%E3%81%A6%E3%81%BF TableViewControllerのセルがタッチされた時、prepareForSegueメソッドの中のLogが表示されないので、このメソッドが実行されていないように思います。 以下にコードを晒します。 ViewController.m上でproperty宣言されているUILabel *rowNumはストーリーボード上で ViewControllerと接続されています。 ■ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property NSInteger rowNumber; @end ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4992395.txt ■selectTableViewController.h http://www.dotup.org/uploda/www.dotup.org4992392.txt ■selectTableViewController.m http://www.dotup.org/uploda/www.dotup.org4992394.txt よろしくお願いします。

  • タッチされたボタンを特定したいObjectiveC

    iPhoneアプリ開発の勉強のためObjectiveCを用いてカレンダーアプリを作っています。 for文をネストして横7マス*縦6マスの日付ボタンを作成し、カレンダーのレイアウトを描画しています。 その中でタッチされたボタンの背景色を変えたく、ボタンをタップされた時の処理として btnTapメソッドを呼び出し、そのボタンのタグを取得し、そのタグのボタンの背景色を変える処理を組んでいるのですが、中々うまくいきません。 プログラムの実行はできるのですが、カレンダーのどの日付をタップしても、必ず一番右下のボタンの背景色が変わってしまいます。このボタンはfor文の一番最後で描画されるボタンなので、それが関係ありそうなのですが、どのようにして対処すれば良いのか分からないです。 試しに全てのボタンに違うタグを設定し、ボタンが押された時に呼び出されたbtnTapメソッドの中で [self.view viewWithTag:_btn.tag].backgroundColor = [UIColor yellowColor]; としたのですが、それでも右下のボタンの背景色が変わるばかりでした。 以下にコードをさらします。 btnTapメソッドは実装ファイルの一番下にあります。 また、カレンダーのレイアウトの描画はcalendarViewメソッドで行っています。 ■ViewController.h http://www.dotup.org/uploda/www.dotup.org4900936.txt ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4900938.txt お願いします。

  • iPhoneアプリプログラミングButtonの削除

    iPhoneアプリ開発の勉強のため、Objective-Cを用いてカレンダーを作成しています。 前月、来月のボタンを押した時、カレンダーに表示される月を更新したいのですが、うまくいきません。 今の段階では、まず今の月のカレンダーを表示して、前月のボタンが押された時に画面に表示されるボタンを更新する感じでプログラムを組んでいます。 今月のカレンダーを表示するところまでは出来ているのですが、前月ボタンを押しても何も反応がありません。 自分では恐らく、ボタンの上にボタンを表示するようになっているから、前月のボタンを表示する前にもともとのボタンを削除しなくてはいけないのではと思っていますが・・・ そこでボタンを削除する処理とを組み込みたいのですが、うまくいかず、実行できませんでした。 Buttonの削除方法をいろいろと検索したのですが、なかなか解決に至る処理を見つけられませんでした。 以下にコードを晒します。(無理やりだったり、変数の設定仕方など、汚い点はありますが、その点は甘く見てもらえればと思います・・・) ■ViewController.h http://www.dotup.org/uploda/www.dotup.org4896354.txt ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4896356.txt 余談ですが、この方法でカレンダーのレイアウトを描画していては、この先日付ごとにデータを管理する場合、どうなるんだろうと悩んでいます。 この方法では限界があるのでしょうかね。

  • ボタンがタッチされた時、他のボタンの背景色を変える

    iPhoneアプリ開発の勉強のためObjectiveCを用いてカレンダーアプリを作っています。 ある日付ボタンがタッチされた時、他のボタンの背景色を変える処理を組みたいのですが、うまくいきません。 よくあるカレンダーアプリにあるような、タッチされた日付のボタンの色が変わり、もともとタッチされていた日付のボタンの色が元に戻るようにしたいです。 dayOfTagメソッドで今日の日付のボタンのタグを取得し_dayTagに代入し、 [self.view viewWithTag:_dayTag].backgroundcolor = [UIColor yellowColor]; として背景色を変えるようにしているのですが、画面の全体が黄色になってしまいます。 これらはViewDidLoadの下部の方に書いてあります。 また、他の日付をクリックしたときに、もともと色が変わっていたボタンの色を元のグレーに戻すことはできるのですが、こちらも全体がグレーに戻ってしまいます。 [self.view viewWithTag:_dayTag].backgroundcolor = [UIColor yellowColor]; という書き方に問題があるように思うのですが、どのように対処すれば良いのか分かりません。 以下にコードをさらします。 ■ViewController.h http://www.dotup.org/uploda/www.dotup.org4902374.txt ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4902376.txt _dayTagは初回以降はbtnTapメソッド内にてタップされたボタンのタグを入れています。 よろしくお願いします。

  • Xcodeでカスタムセルを実装できない

    ObjectiveCを用いてiPhoneアプリ開発の勉強をしています。 http://ameblo.jp/iichin0708/entry-11340165016.html UITableViewに表示するセルをカスタムセルにしたく、上記のサイトを参考にしているのですが上手くいきません。 まずSingleViewControllerを選択し、UITableViewとTableViewCellをstoryboardのViewController上にドラッグアンドドロップし、UITableViewとViewControllerの実行ファイルをOutlet接続しました。 以降は上記サイトを参考にプログラムしました。(xibのクラス名と、ヘッダ・実装ファイル名はtestCellという名前にしました。) xibの実装ファイルに最初から書かれていたコードは残したままにしました。(コメントアウトしても結果は変わりませんでした。) これで実行したところ、unsupported Configuration prototype table cells must have reuse identifiers というエラーが出てシミュレータが起動しませんでした。 なので、storyboardのセルを選択し、Identifier inspector を開き、CustmCellをtestCellに、IdentityをCellにしたらシミュレータが起動できましたが、何も項目は表示されませんでした。 カスタムセルのサイズを縦に極端に大きくしても変化が無かったのでうまく接続できていないように思います。 以下にコードを晒します。 ■testCell.h http://www.dotup.org/uploda/www.dotup.org4973490.txt ■testCell.m http://www.dotup.org/uploda/www.dotup.org4973493.txt ■ViewController.h 特に編集していません。 ■ViewController.m http://www.dotup.org/uploda/www.dotup.org4973496.txt よろしくおねがいましう。

  • ショートカットのRespringが出来ない

    iPhoneのアプリのショートカットで、Respring(リスプリング)がありますよね。 こちら、インストールしてみても、以下のような画像のエラーが出て使用できません。 https://dotup.org/uploda/dotup.org1927136.png ショートカットに追加するやり方はググればたくさん書いてあるのですが、 エラーのことは全然見つかりませんこれは何でしょうか?

  • とある同人ゲームから立ち絵を抽出しようとしています

    とある同人ゲームから立ち絵を抽出しようとしているのですが、うまくいきません。 おそらくARCにそういったデータがあると思って色々ソフトを使って抽出や展開、解凍等試してみるも、思うように行きません。 詳しい方教えてください。 フォルダー内のファイルはこんな感じとなっています http://www.dotup.org/uploda/www.dotup.org148315.png_mOIPt3FTtYlOSPafWwGM/www.dotup.org148315.png http://www.dotup.org/uploda/www.dotup.org148319.png_oJODeFoE6YXNfhtc8Xdf/www.dotup.org148319.png ちなみに拾い画像ですが、うまくいくとこうなるそうです。 http://www.dotup.org/uploda/www.dotup.org148464.png_i363iBeM1tVykh4Qmzwg/www.dotup.org148464.png 私的利用でのみ使いますのでお願いします

  • UITableViewの編集モードが実装できない

    Objective-Cを用いてiPhoneアプリのプログラミングを勉強しています。 http://konton.ninpou.jp/program/cocoa/userinterface/UITableView/UITableView2.html UITableViewで編集モードを実装したいと思い、こちらのサイトを参考にコードを記述したのですがsignal:SIGABRTが出てしまい、実行できません。 一応build succeedとは出るのですが、iOSシミュレータの最初の画面が表示される前にエラーが出てしまうという状況です。 以下にコードを晒します。 アドバイスお願いしますm(_ _)m ■ヘッダファイル #import <UIKit/UIKit.h> @interface ViewController : UITableViewController { NSMutableArray *stringArray; UITableView *myTableView; } @property (nonatomic, retain) IBOutlet UITableView *myTableView; @property (nonatomic, retain) NSMutableArray *stringArray; @end ■実装ファイル http://www.dotup.org/uploda/www.dotup.org5336157.txt コードが古いようで、ARCエラーが出ましたが、以下のサイトを参考に対策をしたところ、コード上のエラー表示は無くなりました。 http://d.hatena.ne.jp/mTsuruta/20111107/1320615543

  • このバイク、なに?

    パソコンに表示されるバイク王の広告なんですが。 なんて車種ですか? http://light.dotup.org/uploda/light.dotup.org106239.gif

  • tableView reloadDataが出来ない

    Xcodeを用いてObjectiveCでiPhoneアプリの開発の勉強をしています。 TableViewControllerにて、ボタンを押した時にセルを追加する処理を組みたいのですが、うまくいきません。 NavigationBarに設置したボタンを押した時に、セルに表示するデータを追加する事は出来ているのですが ボタンのactionメソッドの処理の最後に [self.tableView reloadData]; と記述しているにも関わらず、テーブルの表示が更新されず、追加したデータが表示されません。 一度Viewを移動し再度そのテーブルを表示すると、追加したデータがテーブルに表示されます。 [self.tableView reloadData];の直下に置いたNSLogは表示されるので、どこかでプログラムが止まっているという訳でも無さそうです。 ボタンを押したらすぐにデータが追加され、テーブルに表示されるようにしたいです。 他に何かテーブルを更新する方法があるのでしょうか?

専門家に質問してみよう