query: tag:sqlite3

現在のところ、JRubyでjgem install do_sqlite3などによってdo_sqlite3をインストールしようとすると、Native extensionを使っているという事でエラーが出ます。

pre>>
Building native extensions. This could take a while...
/usr/local/jruby/lib/ruby/1.8/mkmf.rb:7: JRuby does not support native extensions. Check wiki.jruby.org for alternatives. (NotImplementedError)
<<--

この問題を解決するには、最新版のdatamapper/doをgithubからとってきて、自分でbuildする必要があります。

http://github.com/datamapper/do/tree/master

doをgit cloneしたら、まずはdata_objectsディレクトリに移動し、以下のようにしてdata_objectsをインストールします。

pre>>
% jruby -S rake package
% sudo jgem install pkg/data_objects-0.9.12.gem
<<--

続いて、do_jdbcディレクトリに移動し、do_jdbcをコンパイルしてインストールします。

pre>>
% jruby -S rake compile
% jruby -S rake package
% sudo jgem install pkg/do_jdbc-0.9.12-java.gem
<<--

最後に、do_sqlite3 ディレクトリに移動し、以下のようにインストールします。

pre>>
% jruby -S rake package
% sudo jgem install pkg/do_sqlite3-0.9.12-java.gem
<<--

以上でインストール完了です。

posted by genki genki on Sun 12 Apr 2009 at 03:34 with 0 comments

幸か不幸かいままで気がつかなかったのですが、
sqlite3ではDROP COLUMNが使えないらしい。
do_sqlite3レベルでリネーム&コピーによる実装を行うか、
sqlite3のアップデート待ちという事になりますね。

sqlite3はiPhoneアプリでも使ってるので、カラムの削除はなるべくしなくてすむように気をつけよう。

See Also

posted by genki genki on Thu 1 Jan 2009 at 17:33 with 0 comments

Sqlite3を使っている場合に、テーブルが存在するかどうかを確認する為には、
以下のようなSQLを実行すればOkです。

sql>>
SELECT count(*) FROM sqlite_master
WHERE type='table' AND name=?;
<<--

?には、sqlite3_bind_textなどで存在を確認したいテーブルの名前をbindします。

あとは結果をsqlite3_column_intなどで取得すればOkです。

See Also

posted by genki genki on Wed 15 Oct 2008 at 18:58 with 0 comments