JavaとSQLiteを使ったアプリケーションを作成しています。

そこで何点か疑問に思う事がありましたので、質問させてください。

1. エラーの種類の判定について
SQLiteは他のDBと異なり、エラーコードを返さないと聞きました。
その場合、エラーの種類はどのように判定するのでしょうか。

2.バインド
COBOLなどでは、データベースにバインドと言う処理を行いますが、SQLiteではバインドの機能はあるのでしょうか。

以上よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

SQLiteは本体プログラムに対して、直接リンクしたライブラリもしくは共有ライブラリやダイナミックリンクライブラリの形で利用できる、組み込み型データベースエンジンです。


http://ja.wikipedia.org/wiki/SQLite

A1.
APIの結果コードが返ります

A2.
Bindメソッドを使います
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/06/09 11:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q【sqlite3】deleteしても.dbファイルのサイズは減らない?

DB及びSQLに詳しい方、教えてください。

sqliete3を使ってます。
insertしたレコードをdeleteしても.dbファイルのサイズは小さくならない
様なので、テーブルのカラムに削除フラグを設けて、削除はdeleteコマン
ドでレコードを削除する代わりに、フラグのupdateとし、
レコード挿入の場合は、フラグが立ってるレコードを見つけて、そのコー
ドを更新(フラグが立ってるレコードが無い場合はinsert)とする仕様に
してみようかと考えてます。
もちろんselect時は、フラグの立ってるレコードをwhere句で除外するつも
りです。

そこで、質問なのですが、フラグの立ってるレコードを一つselectして該
当レコードをupdateするには、どのようなSQLになるでしょうか?

フラグが立つレコードは複数もしくは無い事が考えられるので、例えば、
update table01 set col = 'hogehoge' where flag = 1;
では上手く機能しないと考えます。
複数レコードが選択された場合は、任意のレコードを選んで更新、また、
レコードが一つも選択されなかった場合の条件判定(後のinnsert)は、
どのように記述したらよいのでしょうか?

※そもそも、そんな事しなくても他にもっと良い方法があるよ。
 といった場合は、その方法を伝授してください。

それでは、ご指導のほど、宜しくお願いいたします。

DB及びSQLに詳しい方、教えてください。

sqliete3を使ってます。
insertしたレコードをdeleteしても.dbファイルのサイズは小さくならない
様なので、テーブルのカラムに削除フラグを設けて、削除はdeleteコマン
ドでレコードを削除する代わりに、フラグのupdateとし、
レコード挿入の場合は、フラグが立ってるレコードを見つけて、そのコー
ドを更新(フラグが立ってるレコードが無い場合はinsert)とする仕様に
してみようかと考えてます。
もちろんselect時は、フラグの立ってるレコードをwhere...続きを読む

Aベストアンサー

素直にvacuum

Qsqlite2とsqlite3の違いについて

sqliteの使用を検討している者ですが、sqlite2とsqlite3の機能的な違いは何でしょうか?sqlite自体は全く今まで使用したことはありませんが、MySQL,PostgreSQLなどは使ってまして、手軽に利用できる点に、ある程度の魅力を感じました。
sqite2とsqlite3の違いにつきましては、安定性(不具合状況)や速度、追加された機能などを知りたいと思っています。

Aベストアンサー

OSやプログラム言語などの制限は考えず、純粋にSQLite2とSQLite3の違いについて回答します。安定性や速度についてはわからないので、機能の違いについてのみ限定します。

結論から言うと機能の違いはあります。以前、自分の知っている範囲で回答した質問があるので以下に挙げておきます。
 SQLiteのテーブル名を変更したい -> http://okwave.jp/qa4283629.html
 SQLiteのフィールド追加のやり方 -> http://okwave.jp/qa3227290.html

読んでいただくとわかりますが、どちらもSQLite3では簡単にできますがSQLite2ではちょっと手間がかかります。

その他にもいろいろと機能追加されているようです。Wikipediaでも次のようなことが書かれていました。ただし自分は理解してないので真偽は御自分で検証してください。
 Wikipedia - SQLiteからの引用
  Ver3.3.8 から、全文検索の FTS1モジュールがサポートされた。
  引用元 -> http://ja.wikipedia.org/wiki/SQLite

詳しいことは本家サイトで読むしかないでしょう。
 SQLiteの本家 -> http://www.sqlite.org/

OSやプログラム言語などの制限は考えず、純粋にSQLite2とSQLite3の違いについて回答します。安定性や速度についてはわからないので、機能の違いについてのみ限定します。

結論から言うと機能の違いはあります。以前、自分の知っている範囲で回答した質問があるので以下に挙げておきます。
 SQLiteのテーブル名を変更したい -> http://okwave.jp/qa4283629.html
 SQLiteのフィールド追加のやり方 -> http://okwave.jp/qa3227290.html

読んでいただくとわかりますが、どちらもSQLite3では簡単にできますが...続きを読む

QSQLiteとファイルキャッシュではどちらが高速か?

現在、SQLiteとPHPのキャッシュ(Cache_Liteなど)をともに使っているのですが、
どちらも使えそうな場合、どちらを使うか
迷いながら長い間使っています。

そこで、以下のような場合どちらを使うのがおすすめか
意見をお願いしたく思います。

SQLiteでいえば
ID content
1 比較的長い文章1..
2 比較的長い文章2..
3 比較的長い文章3..
.....

キャッシュ(ファイル)であれば
ファイル名:1 内容:比較的長い文章1..
ファイル名:2 内容:比較的長い文章2..
ファイル名:3 内容:比較的長い文章3..
.....

のようなものです。

SQLiteの場合、インデックスはIDにあり、検索時(SELECT時のWHEREなど)も
文章(content)の方で行うことはなく、IDでSELECTして取り出すのみです。

さらに、この
[比較的長い文章..]
は更新されたり、レコードorファイルごと削除される可能性があるとします。

このとき、データ数が数千数万~と膨大になるとき、
直近・将来的にどちらが遅くなる、あるいは不便になる(壊れるなど)
ことがありうるでしょうか。

なお、こういうものは「一般的にどっちの方が良いとはいえない、場合によるものだ」ということは重々承知しておりますが、その上で
おすすめや使い分けがありましたら、あるいは速度的な情報がありましたら、ぜひよろしくお願いいたします。

現在、SQLiteとPHPのキャッシュ(Cache_Liteなど)をともに使っているのですが、
どちらも使えそうな場合、どちらを使うか
迷いながら長い間使っています。

そこで、以下のような場合どちらを使うのがおすすめか
意見をお願いしたく思います。

SQLiteでいえば
ID content
1 比較的長い文章1..
2 比較的長い文章2..
3 比較的長い文章3..
.....

キャッシュ(ファイル)であれば
ファイル名:1 内容:比較的長い文章1..
ファイル名:2 内容:比較的長い文章2..
ファイル名:3 内容:...続きを読む

Aベストアンサー

「PHPのキャッシュ」というのは知らないのですが、単純な入出力なら、RDBMSでなくOSレベルの入出力の方が単純だし、速いです。
RDBMSにするメリットは、SQLによる柔軟な操作であったり、SQLiteは該当しないのでしょうが排他制御や障害回復、機密保護などの機能が使えることです。

QDBアプリケーションの設計方針 (参照整合性、外部キーなどの制約はDDLで定義すべき?)

標記の件でご意見を伺いたく投稿します。
データベースにおいて、参照整合性、外部キーなど、レコードの整合性を守るのに不可欠な要素が
いくつかありますが、これらをDDLで定義するのと、フロントエンドのアプリケーションで実装する
のと、どちらが望ましいでしょうか?

世間で普及している教本等では、DDLで定義することになっているようですが、この辺りをきちんと
作り込んだ経験がありません。理由は以下の通りです。

(1) 制約でガチガチに縛ってしまうと、テストデータの作成に難儀する。
→ Access の場合、アプリケーションの画面が影も形もない段階で、テーブルのデータシート
ビューから直接データを投入できるが、制約で縛るとこの手軽さが失われてしまう。
(トリガを書けば、データは投入できるが、何だか余分な作業が増えて損をしたような気がする)

(2) データの整合性は保証できるものの、制約に違反した場合のエラーメッセージがユーザー
フレンドリーではない。

結局、アプリケーションで、エラーを事前に開始するか、またはエラーメッセージをユーザー
向けの文言に書き換える処理が必須となる。

DDLで制約を定義しても、アプリケーション実装の作業負担は軽くならない。


そんな訳で、主キー、規定値以外の制約をDDLで実装した経験は殆どありません。
Accessの場合、ド素人でもデータベースを直接GUIから操作できるので、設計者の意図に反して
データの整合性が損なわれるリスクはありますが、総合的に見て、DDLで制約を定義するメリット
を私はあまり感じません。

一般的にはどうなのでしょうか?
専門家の皆様のご意見をお待ちしております。

初心者ですので、わかりやすくご指導頂けると幸いです。(笑)

標記の件でご意見を伺いたく投稿します。
データベースにおいて、参照整合性、外部キーなど、レコードの整合性を守るのに不可欠な要素が
いくつかありますが、これらをDDLで定義するのと、フロントエンドのアプリケーションで実装する
のと、どちらが望ましいでしょうか?

世間で普及している教本等では、DDLで定義することになっているようですが、この辺りをきちんと
作り込んだ経験がありません。理由は以下の通りです。

(1) 制約でガチガチに縛ってしまうと、テストデータの作成に難儀する。
→ Ac...続きを読む

Aベストアンサー

>そんな訳で、主キー、規定値以外の制約をDDLで実装した経験は殆どありません。

業務の種類によって対応はまちまちですが、
私も主キー、規定値、サイズくらいですかね。

>結局、アプリケーションで、エラーを事前に開始するか、またはエラーメッセージをユーザー
向けの文言に書き換える処理が必須となる。

これも同意です。
アプリのほうでメッセージ出して、なおかつ通常のメッセージボックスはダメという要求が多い。
結局作りこむことになるのが現状

なおかつ、現在個人情報保護法等もあり、
データフィールドを個別に暗号化処理するようにしてしまったので、
基本の制約は意味を成さなくなってしまいました、

暗号化込みのデータベースが出ればまた使うかもしれないですが・・・

なので、最近に限って言えばほとんど使っていません。

Qスタンドアロン端末でのDB構築にお勧めなDBは?

現在、スタンドアロンのPCで下記のような自作システムを使用しています。

OS:Windows98
アプリケーション:Visual Basic6.0 Pro
DB:JET(Microsoft ACCESS97)

今までのところ、DBが壊れるということもなく問題は無いのですが、万が一
のこともあるかと思い、もっとリカバリ機能の発達しているDBに乗り換えよ
うかと考えています。
つきましては、スタンドアロンPCにインストールして使用することのできる、
比較的安価なDBシステムでお勧めな製品がありましたらお教えください。
宜しくお願いします。

Aベストアンサー

とりあえず VB 6.0 Pro を持ってるならMSDEなんてどうでしょうかね。
DAOじゃなくてADO経由でのアクセスになるけれど、今やADOなんてAccessの入門書にも出てますしね。
個人ユースならいろいろ細かいことをやらなくてもいいでしょ。

ただし、MSDE for VisualStudio 6.0 は MS-SQLServer 7.0 相当なので、OfficeXPやVS.NETなんかについてくるMSDE2000に比べると一世代古いですけどね。

MSDE for VisualStudio 6.0
http://www.microsoft.com/japan/msdn/vstudio/msde/default.asp

MSDE実験ページ
http://www.ki.rim.or.jp/~kuro/MSDE/

All About Japan の記事
http://allabout.co.jp/computer/database/subject/msubsub_VB.htm


人気Q&Aランキング

おすすめ情報