sqlコマンドで.mode htmlを使ってからselectすると
テーブルで返ってくるのでそのままrubyでも出力できるとコードが短くなって楽だと思ったんですが、うまくできません。
どうかやり方をお教えください。
rubyを始めたばかりでexecuteの実行結果がどのような構造になっているかもよくわかりません。
こちらの方もお教えいただけると幸いです。
下記のような使い方をしたいです。
<%# -*- coding:shift_jis -*- %>
<% require 'rubygems' # RubyGems のインストール %>
<% require 'dbi' #DBIの利用 %>
<% dbh=DBI.connect('DBI:SQLite3:fruits.db') %>
<% #HTML形式で受け取る %>
<% #dbh.do(".mode html;") %>
<%# execute select statement%>
<% sth=dbh.execute("select * from fruits;") %>
<html>
<head>
<meta http-equiv="Context-Type" content="text/html;charset Shift_JIS"/>
<title>フルーツ管理</title>
</head>
<body>
<% #テーブルで出力 %>
<table>
<%#=sth %>
</table>
</body>
</html>
<%# relese results %>
<% sth.finish %>
<%# disconnect database %>
<% dbh.disconnect %>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> この@がついたのを何というんでしょうか?
……うん、やっぱりあなたは DBI やら HTML 出力やらを取り扱う前に Ruby の基礎を勉強したほうがいいです。
これについて答えるのは簡単ですが、さすがにこれを知らないというのはTシャツにサンダル履きで富士登山をしますと言うのと同じです。そんな人を見かけたならばあなたももう少し登山向けの装備をしろと言うでしょう、それと同じであなたがやろうとしていることに対して持っている知識が明らかに足りていないからのアドバイスです。
No.1
- 回答日時:
SQLite3 のコマンドシェルでの入力のうち . で始まるものは SQL ではなく SQLite3 コマンドシェル自体へのコマンドです。
ですのでコマンドシェルを経由しない DBI では使えません。http://www.sqlite.org/cli.html
……というか、そんな楽をしようとしたらあかんよw
それと、DB 検索結果の HTML 出力をしようとしているようですが、
> rubyを始めたばかりでexecuteの実行結果がどのような構造になっているかもよくわかりません。
と言っている状態ではそれを HTML として出力するのはまだ先の話です。
好奇心と目標があるのはいいのですが、そこに至る過程を抜かしていきなり目標に降り立とうとしても、基礎がしっかりしていない以上その目標地点にあるものを理解することは困難です。回り道のように思われるかもしれませんが、基礎をしっかり勉強される方が結局は早く目標に到達できると思います。
とりあえず、SELECT についての「executeの実行結果」はフェッチするものですよ。
あ、そうそう。
DBI は 1.8 までしかサポートしていないし、メンテナンスも行われていないようなので代わりに RDBI を使った方がいいみたいですよ。
http://qiita.com/weal/items/2c28f12a23c501db37f2
この回答への補足
.は使えないんですね、質問してよかったです。
最後に2つだけ。sth.inspectで下記のようなものが出力されたのですが、この@がついたのを何というんでしょうか?もうひとつは、なぜshtに格納されていないのにsth.each do |row|などでデータを取得できるんですか?
#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @stmt=#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @remainder="", @columns=["id", "name", "description", "price"], @types=["int", "varchar(100)", "text", "int"], @results=#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @stmt=#>>, @result=#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @stmt=#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @remainder="", @columns=["id", "name", "description", "price"], @types=["int", "varchar(100)", "text", "int"], @results=#>>, @rows=0>, @trace_output=nil, @trace_mode=nil, @convert_types=true, @fetchable=true, @prepared=true, @executed=true, @cols=["id", "name", "description", "price"], @coltypes=[DBI::Type::Integer, DBI::Type::Varchar, DBI::Type::Varchar, DBI::Type::Integer], @row=[nil, nil, nil, nil], @dbh=#, @busy_handler=nil, @collations={}, @functions={}, @results_as_hash=nil, @type_translation=false, @readonly=false>, @attr={"AutoCommit"=>true, "auto_vacuum"=>true, "cache_size"=>2000, "default_cache_size"=>2000, "default_synchronous"=>nil, "default_temp_store"=>nil, "full_column_names"=>true, "synchronous"=>2, "temp_store"=>0, "type_translation"=>false}>, @trace_output=nil, @trace_mode=nil, @convert_types=true, @driver_name="SQLite3", @last_statement="select * from fruits;">, @raise_error=nil>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php エラー 2 2022/10/23 16:43
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あせんうぶり言語
-
(再質問)エクセルのマクロボ...
-
100万件越えCSVから条件を満た...
-
電子書籍epub変換について
-
pandasでsqlite3にテーブル作成...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
MacBookAir起動時にRubyソース...
-
C言語の入力した文字を反転させ...
-
Ruby on Railsでボタンをクリッ...
-
三項でたとえば交換って
-
英数字を含む文字列(0-9,A-Z)...
-
じゃんけんのプログラムを作っ...
-
前回の質問の続き
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
エクセル 連続保存マクロ
-
ウェブサイトを別の会社のホス...
-
VBAのvlookupでエラーになって...
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
rubyでバイナリファイルを直接...
-
rubyプログラム中の標準出力を...
-
Rubyで文字列の先頭を取りだす
-
初心者 パイソンプログラム
-
;nilの意味
-
Rubyで%uxxxのデコード
-
rubyについて詳しい方
-
Rubyでwebページを取得するとき
-
python 素数判定コード
-
小文字wと大文字Wの区別
-
システムエンジニアの適正について
-
web上のhtmlファイルから文字デ...
-
VB.NETで階乗を求めるプログラ...
-
COBOLのIFの入れ子について
-
Ruby / passenger のインストー...
-
Ruby interpreter (CUI) 2.2.3 ...
-
Passengerがインストールできな...
-
RubyでNo such file or directo...
-
プログラミング言語で大文字と...
-
式?文?節?
おすすめ情報