5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

sqliteを語るスレ

1 :名無しさん@お腹いっぱい。:03/06/30 16:01 ID:3hdiLYQO
とりあえず立てときますた

参考:http://www.sqlite.org

2 :名無しさん@お腹いっぱい。:03/06/30 16:02 ID:???
>>2またお前かよ、なんなんだよ「2」ってのは、何か楽しいのか?お前さぁ、みんなが楽しく話してるところに近付いただけでススーっと目を合わさずに去られたって事ってないか?
なに? いつだってそうなのか?まぁ、そうだろうな。一般社会ではお前みたいにキモいヤツは相手にしたくないんだよお前はネットの中でも「おマメ」みたいなもんだからな
引きこもった挙げ句、朝からネットにかじりついてスレが立つのを一日中待ち、すかさず「2」と書き込む。 つまんねえ人生だな
みんなが書き込む掲示板に「2」って書き込んだことで自分も社会に参加してるつもりになってんだろ
それにしてもさぁ、もう少し考えろよなんとか社会復帰しようと一晩中考えて出来たギャグが「2」かよ!!
おまえさぁ、一度外に出て人が話してるところでいきなり「2!」って言ってみろよ!もうダメなんだよ、無理なんだよ、お前には
ネット社会ですらコミュニケーションとれてないじゃんわからないだろうけどさぁ
みんな苦虫を噛み潰すような目でお前の自信作の「2」を見てるんだよそう、もう終わりにしようよ、この先楽しい事なんかないんだよ、きっと。



3 :名無しさん@お腹いっぱい。:03/06/30 21:49 ID:???
誰か使ってる人いませんか?

4 :nobodyさん:03/07/01 18:36 ID:KD9GbSVt
PHP5でデフォルトでバンドルになったはいいけど、
Windows + Apache + MySQL + phpMyAdmin 環境で
ずっとテストやってたからとりあえずどうしていいかわかんないや。

PEAR DBはまだサポートしてないんですよね?
んでもってphpMyAdminみたいなツールはSQLiteにはあるのかなあ。

まあPHP5デフォルトバンドルになる以上、
今後お付き合いしていくのは間違いないだろうと思われるので期待あげ。
詳しい方解説きぼん。


5 :名無しさん@お腹いっぱい。:03/07/12 11:37 ID:???
>んでもってphpMyAdminみたいなツールはSQLiteにはあるのかなあ。

ない。全部コマンドラインで頑張るのが漢のロマン。
ツール欲しかったらそれこそMySQLでやればいい、的なものだからねえ…。


6 :あぼーん:あぼーん
あぼーん

7 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 05:11 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

8 :あぼーん:あぼーん
あぼーん

9 :山崎 渉:03/08/15 22:12 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

10 :山崎 渉:03/08/15 22:36 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

11 :NAME IS NULL:03/10/19 03:06 ID:fcozYorT
PEARのsqlite試し中
期待age

12 :あぼーん:あぼーん
あぼーん

13 :NAME IS NULL:03/10/23 21:14 ID:w0drDQcj
NUT NULLって書いたのにテーブルできてる・・・
スキーマダンプしてもNUT NULL・・・
ていうか誰も使ってないのかよぅ

14 :NAME IS NULL:03/10/29 09:35 ID:???
情報少なすぎです。

15 :NAME IS NULL:03/10/29 22:13 ID:i9iRWIvB
>>14
少ないからこそ話し合おうやないかと。
とりあえずはオフィシャルのマニュアルでなんとかいける。

PHPでPEAR DBインターフェイスで使ってます。
コマンドラインからCSVから一括インポートできないのが今面倒。
それくらい自分で作れってわかってはいるけど。
あと、完全なカラム名入りのINSERT文でダンプできないのも面倒。


16 :NAME IS NULL:03/11/05 13:36 ID:???
delphiのラッパーでやろうと思ってるんだけど、、、

17 :NAME IS NULL:03/11/06 22:49 ID:???
こんなツールもありますね。
SQLiteデータベースを操作するGUIツール。

SQLiteCC
http://bobmanc.home.comcast.net/sqlitecc.html
> SQLite Control Center is a visual tool for working with
> SQLite database files.

スクリーンショットはこちら。
http://home.comcast.net/~bobmanc/sqlitecc.jpg
http://home.comcast.net/~bobmanc/sqlitecc2.jpg


18 :NAME IS NULL:03/11/15 19:28 ID:pb0zFJJB
sqliteのワイド文字対応版ってない?

19 :NAME IS NULL:03/11/26 09:28 ID:hrsdO7GB
.NETユーザーにとても便利。
SQLite用のADO.NETデータプロバイダSQLite.NET登場。
http://sourceforge.net/projects/adodotnetsqlite
まだα版ながら.NET Framework上ですでに動作。
これでODBCドライバもDSN登録もいらなくなった。

20 :NAME IS NULL:03/11/29 15:59 ID:BZztAbw6
SQLでデータベースを操作するGUIツールなら、SQLite専用を考えなくても、
ODBCで接続してくれる汎用のものを使えばいいよ。というか、それが普通。
定番は「Common SQL Environment」かな。->
http://www.hi-ho.ne.jp/tsumiki/
同じフリーウェアの範囲だけでも、
「ぷれぷれPlus」 http://www.geocities.jp/nai_777/
「ODBC Order」 http://homepage2.nifty.com/KENCH/
もSQLiteに使えている。どれも日本製だからちゃんと日本語データが通る。
むろんどれ使うときも、まずはSQLite用のODBCドライバをインストールして
データソースネームを登録してDSNで接続する。

21 :NAME IS NULL:03/11/29 21:01 ID:???
>>20
情報ありがとう。でも、

> まずはSQLite用のODBCドライバをインストールして
> データソースネームを登録して

これが面倒(と感じる人もいるよね)。

22 :NAME IS NULL:03/12/01 00:51 ID:???
PHPで使おうと思ってるんですが、日本語(EUC)は通りますか?


23 :20:03/12/01 09:34 ID:O/R85Nmb
ODBCドライバのインストールは一度やっとけばいいやと思うけれども、
データソースネームの登録をデータベースごとにいちいちやるのは
本当にうっとうしい操作で嫌いです。
でも今の所こうするしかないようで・・・いい手あったら教えて下さい。
JScriptやVBScriptなどからSQLiteやJetを使うときは 、
DSNなしでドライバ名とファイル名を直接指定する接続の方を
使っちゃうんですが、この手はどこでも通用するわけではないようで。

24 :NAME IS NULL:03/12/01 16:34 ID:???
API経由で作れるんだから、必要なときにその場でスクリプトから
作ってしまうのはどうか

25 :名無しさん@Linuxザウルス:03/12/01 19:55 ID:fM+FlLdE
コンパクトなので組込用途にも使えそうでつ。

26 :23:03/12/02 09:12 ID:UGNuLnLW
>>24
データソースネームの登録をスクリプトからしてしまうということでしょか。
できるかも。方法を調べてみます。

27 :23:03/12/02 10:31 ID:/D3psl+q
ありました。DSN登録はスクリプトでもできそうです。
「ファイルDSNを使用して接続する」
http://homepage2.nifty.com/inform/vbdb/filedsn.htm
というVBでのサンプルみつけました。これを応用すればできそうです。

28 :23:03/12/02 11:00 ID:/D3psl+q
あれ。APIを使うならこっちでしたか。
「ODBCデータソースの登録・削除 (API) 」
http://homepage2.nifty.com/inform/vbdb/api_dsn.htm
何度も失礼しました。

29 :NAME IS NULL:03/12/05 14:41 ID:zpfAzYND
100行ほどのデータを
SQLiteとMySQLにつっこんで、
それぞれ一万回selectしてみたけど、
MySQLの方が速かった…

↓一万回selectにかかった時間
 SQLite        MySQL
2.0537250042     1.35091304779
1.91771602631     1.58153700829
2.04412007332     1.39080893993
1.93604099751     1.38392806053
1.98756504059     1.34185707569


30 :NAME IS NULL:03/12/05 22:33 ID:???
>>29
何回おきにcommitした?


31 :NAME IS NULL:03/12/05 22:34 ID:???
ああ、INSERTと読み間違えた。
ごめんなさい。


32 :NAME IS NULL:03/12/06 07:47 ID:Y3cvNAdD
データ投入のスピードはどうよ、おねーさん

33 :NAME IS NULL:03/12/06 21:12 ID:???
sqlite_create_function() や sqlite_create_aggregate() って
どんなことに使ってる?


34 :NAME IS NULL:03/12/07 18:13 ID:???
>>29
SQLiteの設定値は?
速度あげるためにチューニングした?

35 :NAME IS NULL:03/12/07 22:27 ID:???
>>34
そんなチューニングがあるのかい?

36 :NAME IS NULL:03/12/09 01:31 ID:???
MySQL使わない?としてSQLiteを使うのだろうか?
PHPにSQLiteが搭載されてもPostgreを使うのではと思う俺。
いやいやMySQLが擦り寄ってくるのでは?と期待する俺。


          正直なところSQLiteはどうだい?

37 :いなむらきよし:03/12/09 13:39 ID:90H4pzxx
キケー!

38 :NAME IS NULL:03/12/09 23:33 ID:???
とあるオンラインソフトを作ってるんですが、
データ量が多くなってきたのでデータベースを導入しようと思っていた矢先に
SQLite を見つけました。
ソースコードから全部結合させて SQLite を内包させちゃいます。
(これが組み込みってやつですよね?)
これから追っていくつもりなのでよろしくです。
ちなみに DB は初心者です。

39 :38:03/12/12 23:07 ID:fEBGkoUY
オンラインソフトってのは、Windows 用のフリーソフトとか
シェアウェアとかです。
既存のソフトのデータベースを SQLite のデータベースに変換する
プログラムを書いたんですが、以外と遅いですね。

40 :NAME IS NULL:03/12/13 09:27 ID:???
>>39
そゆ書き方をすると「SQLiteって遅いのか」というイメージだけが広がって
「遅いからクソ」とか自分は知りもしないのにけなす奴が増えていく悪寒


41 :38:03/12/13 20:07 ID:???
>>40
ごめんなさい。私がまさにそういうイメージを植え付けられて試していたフシがあります。
で、TRANSACTION 化(って言うのかな?)すると十分に実用的な速度になりました。
だいたい10万件くらいのデータを変換したんですが、所要時間のほとんどが
SQL 文を作る処理で、SQLite の速度はめちゃ速かったです。
フリーソフトとかに組み込むような用途では SQLite 以外の
選択肢は考えられないように思います。速いし。

42 :NAME IS NULL:03/12/14 14:35 ID:???
>>40
そゆ書き方をすると「SQLiteって遅いのか」というイメージだけが広がって
「遅いからクソ」とか自分は知りもしないのにけなす奴が増えていく悪寒

>>41
比較などの詳細をキボンヌ。

43 :38:03/12/18 01:01 ID:???
SQLiteCC をちょっぴり日本語化してみました。
グリッドに日本語を表示できます。グリッドで更新もできます。
クエリー部では日本語を使えません。ごめんなさい。
http://d.hatena.ne.jp/halts/20031217#1071676215

>>42
そのうち。

44 :NAME IS NULL:03/12/23 13:03 ID:???
WEB+DB PRESS Vol.18 pp.86-94

45 :NAME IS NULL:04/01/02 14:56 ID:cP+5Z7n4
SQLiteExplorer というGUIツールを知りました。外国製にしては珍しく
文字セット変更があって日本語が使える。
作者や出所が不明になっているらしいですが、下でダウンロードは可能。
http://members.rogers.com/mbi/software/software_index.htm

46 :NAME IS NULL:04/01/02 17:19 ID:GTnsxWCQ
データ型のないSQLiteで、型の宣言をしています?
(1) 無意味だからやらない。 (2) 目印になるからやる。
(3) しないよりした方がいいと言う人がいるからやる。
(4) するとやっかいな結果になるからやらない。
など、考えていますが、どれが適当かはわかりません。
Date型を付けてしまって、後悔したことがあります。
読むときにアプリのDateTime型が例外を出してきたり...
単なる目印のつもりはまずいことがある。ということはメリットは?
Integerも要注意みたい。

47 :NAME IS NULL:04/01/02 21:34 ID:???
>>46
> Date型を付けてしまって、後悔したことがあります。
> 読むときにアプリのDateTime型が例外を出してきたり...

具体的にどんなことになったの?


48 :NAME IS NULL:04/01/05 11:44 ID:gQ8zMdLQ
NULLの扱いがよくわからん!

49 :46:04/01/06 10:49 ID:Pt3TSpWu
>>47
ADO.NETのDataSetに型の指定をしないデフォルトの読み込みをすると、
Date型をSQLiteで指定してあるときは、それをスキーマから読み取るようで、
.NETのDateTime型を使ったDataSetができて、データが"2004/01/02"という
形式でないと読み込みのエラーを起こすのが原因らしいです。
こういうことはADOのRecortSetでも起きるのかも。上にのってるSQLiteExplorer
でやってみるとわかる。Date型に"2004-01-02"なんていうデータでは、SQLでの
Insertはできても、読むときにはエラーになる。Integer型に"3.14"のデータでも
Double型に"テスト"でも、SQLiteは受け付けるけれど、
SQLiteExplorerは読み取り表示ができない。といったことです。
読むときの型を指定すればいいと思うかもしれないけど、SQLite専用に何でも
Stringで読む指定は何とかできるかもしれないけど、一般的には
もう汎用性がなくなって、用途によっては困ると思います。

50 :NAME IS NULL:04/01/06 15:45 ID:???
>>49
SQLite以前に型チャックちゃんとしようぜ。
Double型に文字列を投入しちゃうようなプログラムはダメだ。

51 :46:04/01/07 09:06 ID:UJmgjzrz
>>50
けっきょく、そういうことです。
型のないSQLiteに型チェックなんかないし、
型をつければ、それをスキーマから読んであてにしようとするプログラムは
あるんだから。いっそ型を付けない方が正しい。型はないんだから。
>SQLite以前に型チャックちゃんとしようぜ。

52 :NAME IS NULL:04/01/07 16:10 ID:???
>>51
型はつけなよ。他のDBからテーブルをインポートしたり
エクスポートしたりするときそのまま持ってけるから便利じゃん。
君の場合は使ったADO.NETのラッパー?が型のチェックを
ちゃんとしてないだけじゃろ。

53 :NAME IS NULL:04/01/07 21:34 ID:???
>>49
Date型のカラムに '2004-01-02' という値が紛れ込んでてエラーになったという話ですか
どうしてそんなことに?

入力の際にそれをはねなかったのが問題だと思う


54 :46:04/01/08 11:00 ID:lOX/MR5Z
>>52
型はつけない方がむしろ正統と結論にしたのは、
型をつけて利用することの方が裏技に近いものと思った、ということです。
うまく使えば便利かも。

ADOやADO.NETがデータベースに付けられた型を見たあとそれをどう料理するかは、
もっと調べてみる。

>>53
元はMySQLのデータベースに入れてたデータなんです。
MySQLは Date型の書式に ISO準拠の国際標準書式"yyyy-mm-dd"を採用していて、これ以外ははねられる。
だからこれをSQLiteにそのままインポートしても全部 '2004-01-02'の書式。日付は例でした。
変換してからインポートが正しい? ISO書式じゃだめ?
どうせSQLiteは Date型にすれば日付計算がサポートされるなんてわけないから、
Date型を付けなけりゃうまくいったのに、との後悔だったんだけど・・・

55 :46:04/01/08 14:50 ID:wdL+QGFi
>>52
ラッパーの件がありました。たぶん、そこの問題じゃないです。
ADO.NETでも高級な DataSetでの例だったんです。
低級で高速な DataReaderでは、明示しなけりゃDateTime型にデータを投入しませんから、
もともと問題なしです。

56 :46:04/01/08 17:41 ID:7mJL8ouu
型チェックのことに話は膨らんじゃってごめんなさい。
言葉たらずでしたが、"2004-01-02"のデータはミス入力のつもりではなかったんです。
元々のこのDate型の話を整理すれば、こんなことです。
次の3つは同時に成り立たない。
(1) 日付の書式に ISO書式"yyyy-mm-dd"を使う。(MySQLと同じにする)
(2) SQLiteのデータ型に Dateを付ける。
(3) ADO.NETの DataSetをオートで使う。
だから、最も不要なものをやめるとすると(2)を選ぽうか、ということだったんです。
むろん、がんばれば、他にも手はあるにしても。
「Integer型に"3.14"のデータでも、Double型に"テスト"でも、SQLiteは受け付けるけれど」
が誤解の元でした。失礼しました。

57 :NAME IS NULL:04/01/08 18:37 ID:???
まあこれでも読め。

** NOTES:
**
** SQLite processes all times and dates as Julian Day numbers. The
** dates and times are stored as the number of days since noon
** in Greenwich on November 24, 4714 B.C. according to the Gregorian
** calendar system.
**
** 1970-01-01 00:00:00 is JD 2440587.5
** 2000-01-01 00:00:00 is JD 2451544.5
**
** This implemention requires years to be expressed as a 4-digit number
** which means that only dates between 0000-01-01 and 9999-12-31 can
** be represented, even though julian day numbers allow a much wider
** range of dates.
**
** The Gregorian calendar system is used for all dates and times,
** even those that predate the Gregorian calendar. Historians usually
** use the Julian calendar for dates prior to 1582-10-15 and for some
** dates afterwards, depending on locale. Beware of this difference.

58 :NAME IS NULL:04/01/08 18:43 ID:???
ついでにこれも読めや。

/*
** Parse dates of the form
**
** YYYY-MM-DD HH:MM:SS.FFF
** YYYY-MM-DD HH:MM:SS
** YYYY-MM-DD HH:MM
** YYYY-MM-DD
**
** Write the result into the DateTime structure and return 0
** on success and 1 if the input string is not a well-formed
** date.
*/
static int parseYyyyMmDd(const char *zDate, DateTime *p){
int Y, M, D;

Y = getDigits(zDate, 4);
if( Y<0 || zDate[4]!='-' ) return 1;
zDate += 5;
M = getDigits(zDate, 2);
if( M<=0 || M>12 || zDate[2]!='-' ) return 1;
zDate += 3;
D = getDigits(zDate, 2);
if( D<=0 || D>31 ) return 1;
zDate += 2;
while( isspace(*zDate) ){ zDate++; }
if( isdigit(*zDate) ){
if( parseHhMmSs(zDate, p) ) return 1;
}else if( *zDate==0 ){
p->validHMS = 0;
}else{
return 1;
}
p->validJD = 0;
p->validYMD = 1;
p->Y = Y;
p->M = M;
p->D = D;
if( p->validTZ ){
computeJD(p);
}
return 0;
}

59 :46:04/01/09 10:57 ID:vDXjRDTC
>>57 >>58
ずばりサポート、ありがとうございました。
訂正: ラッパーが対応していないも正解でした。
やることが山ほどできました。

60 :NAME IS NULL:04/02/10 22:26 ID:1wsqz1Hs
SQLiteManagerはなかなかいい。

しかし、情報が少ないよね〜
もう少しすればいろいろ情報も出てくるんだろうけど・・・

標準の関数が少ないのが辛い。

61 :NAME IS NULL:04/02/20 12:01 ID:???
良さそうなDBなのに、話がなかなか進まないね。
まあ、俺も使っていないのだが。

タイプレスのDBっていうのは、
アプリ側のやる仕事が増えそうな印象があって(それが本当かどうかはしらんが)、
それでなかなか触手が伸びないのかな?

62 :NAME IS NULL:04/02/21 02:04 ID:UE2tYF6F
MySQL なり PostgreSQL なりと同列に考えるような Web のバックエンドとしては
アプリ側の仕事が多くて使いにくいんでしょうが,Windows や Mac ネイティブな
ソフト用の組み込み DB としてはほかに選択肢がないから sqlite が一番だと思ってます.
自分でゴリゴリと DB 操作コードを書かなくていいのは激しく楽です.
JET エンジンとかがほかの選択肢なんでしょうか.
個人的には alter table がないのが厳しい.
あと,sqlite 自身ちょくちょくバージョンアップしてるみたいですが,
どこがどう変わったか公式サイトをみてもわからないのがつらいです.

63 :NAME IS NULL:04/02/22 00:53 ID:???
>>62
サイトは殺伐としすぎてますよね。
sqlite 自体に必要な機能を備えさせるのは構わないけど、サイトやらドキュメントは
もっと饒舌であってほしい。

64 :NAME IS NULL:04/02/22 13:34 ID:84o4/Ew4
>>62
http://www.hwaci.com/sw/sqlite/changes.html
ちゃんと書いてるだろうがヴォケ。英語嫁。空気嫁。

65 :NAME IS NULL:04/02/22 21:58 ID:4n+LahDS
>>64
あ,ほんとだ.こっちみてますた
http://www.sqlite.org/cvstrac/timeline
つーか
http://www.sqlite.org/
からそこに辿れないのが不親切よね(辿れたらスマソ)

66 :NAME IS NULL:04/02/23 08:23 ID:gJFAyjPD
>>65
http://www.sqlite.org/トップの、"Current Status"の"Change Summary"じゃだめなん?

67 :NAME IS NULL:04/02/23 09:16 ID:xmVB1NEu
辿れたよ。スマソ(65の代筆)。

68 :NAME IS NULL:04/02/23 14:51 ID:???
sqlite使ってますが、型なしで困るのが日付と時刻。
表示や入力フォーマットの統一も面倒だし、
並べ換えもねえ。

PHPとかかませばいいんだろうが、sqliteそのものをダイレクトに使ってるからねえ。




69 :NAME IS NULL:04/02/23 16:56 ID:aEcQvCoc
最初は、alter table を使おうとして動かずあせった。
ドキュメント見直したらサポートしてない、とあって、
じゃあどうすりゃいいんだと、またもあせった。
答えは単純なのであった。

70 :NAME IS NULL:04/02/23 22:12 ID:???
このスレには詳しく調べる前に
すぐに文句を言っちゃう人が多いですね・・・。

71 :NAME IS NULL:04/02/24 01:56 ID:???
>>70
2ちゃんねる全体の傾向です。

72 :NAME IS NULL:04/02/24 09:21 ID:tHk27BoL
型なしのsqliteで、ALTER TABLE がどれだけ必要かということがある。
>Integer型に"3.14"のデータでも、Double型に"テスト"でも、SQLiteは受け付ける
という便利な仕様だから ALTER TABLE にほとんど実質的な意味がない。

columnが足りなくなる方に、とっておきの Tips
CREATE TABLE ex1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z);
ご希望ならaaからzzも追加サポート。

73 :NAME IS NULL:04/02/24 22:53 ID:???
ワラッタ
Excel の表みたいだな。

74 :62:04/02/25 18:20 ID:UqpphvZs
>72
公式には「バックアップとって,dropして,createして,コピーすれ」って
書いてありますね.パフォーマンスはひどいと思われますが...
http://www.sqlite.org/faq.html#q13
私は a,b,...,z じゃないけど,列に「予約」を加えることにしてます.

75 :NAME IS NULL:04/02/25 20:23 ID:???
パフォーマンスはあまり気にならないのでは
1回だけだし

76 :NAME IS NULL:04/02/25 20:35 ID:???
ちょっとは自動化できるスクリプトかバッチファイルでも作ってみるかな。

77 :NAME IS NULL:04/02/26 00:12 ID:1lxCODMs
PHPと連携して、管理システムを構築した。

プロセスが起動しないっていうのがいいよ。
サーバーがないような小規模だと、クライアントで
数MBでもメモリー食うのが辛いから。

PHP5が普及すれば、レンタルサーバーでDBを付ける必要もないから
利用価値は大いにあるだろうね。

後はプロシージャさえ組めれば・・・・・


78 :NAME IS NULL:04/02/26 09:25 ID:???
サービスとして起動しておく必要がないのに、とても高速で使えるよね。
これだけコンパクトだと、組み込み用途で重宝というのもよくわかる。やったことないけど。
PHP5で知名度が上がれば「SQLite本」出るかな。

79 :NAME IS NULL:04/02/26 13:29 ID:???
>>74
もうすこし効率のいい方法があったような気がしたけど
やりかた忘れた・・・

80 :NAME IS NULL:04/03/01 01:16 ID:v+M0GB6E
ハマったのでmemo。

PHPでMySQLのデータをSQLiteにインポートしたんだけど
INSERTするときにaddslashesでエスケープしても
正しくINSERTできない時があります。
そんなときはsqlite_escape_stringつかいましょう。


alter tableないんですね・・
SQLiteManagerで作ってたから知らなかった。

ttp://www.rakuto.net/study/htdocs/sqlite/manip.html

上記の例だと一旦メモリ上に元テーブルに行を追加した仮テーブルを作って
元テーブルからデータを拾ってきたあとDROP&CREATEしてますね。

81 :NAME IS NULL:04/03/01 10:02 ID:???
>80
この場合は「行を追加」ではなく「列を追加」でしょうね。
行を追加するInsertのサンプルに上がっているけどね。よく見つけたな。

82 :NAME IS NULL:04/03/01 10:45 ID:LObuw1/6
結局、新しいテーブルを作ることは簡単だが、元のデータを移そうと思うと、
同じ名前の別テーブルに、名前の衝突を回避しながら入れ替えることは
ステップを踏まないと出来ないということだな。

83 :NAME IS NULL:04/03/03 10:09 ID:???
(゚Д゚)ハァ?

84 :NAME IS NULL:04/03/03 11:51 ID:???
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
  |   ハァハァ禁止!  |
  |________|
      ∧∧.||
    ( ゚д゚)||
    / づΦ

85 :NAME IS NULL:04/03/03 20:41 ID:???
(゚д゚)ハーン?

86 :NAME IS NULL:04/03/04 17:40 ID:3W8zShnU
日本でもフリーなPHPスクリプト配布する人が増えているが
海外に比べるとDB使っている人が非常に少ない。
理由はやはりレンタルサーバが対応している所が少ないからってのがあると思う。
で、それが>>77-78の理由で大ブレイクする予感。

87 :NAME IS NULL:04/03/04 18:05 ID:???
クマー!!(・∀・)
http://www5e.biglobe.ne.jp/~yb_net/clip/img/14872.jpg

88 :80:04/03/05 08:16 ID:???
>>81
すんません・・行と列間違える俺って相当DQN。

>>86
PEAR DB使えれば簡単に使えるし。
PHP5がでたら間違いなく流行りますね。

ところで日付型のゼロパディングって皆さんどうやってます?
自分はマメに

//$date = "2004-3-5";
$arr_date = explode("-",$date);
$date = sprintf("%0d-%02d-%02d",$arr_date[0],$arr_date[2],$arr_date[3]);
//型がないってこういう時便利ですよねー
//Cのsprintfではこんなのありえない

ってやってるんですが・・・
もっと便利な方法あります?
PEAR DB内で自動的にできたらいいなぁとか思って
ソースのぞいてみたけど、カラムの型なんかいちいち調べてたら
時間かかりそうだし・・・

89 :NAME IS NULL:04/03/05 20:03 ID:kZCYuHRE
Sqlite で JDBC接続している人いませんか?
英語のサイトを読みつつ 接続したのですが うまくいきません
JAVAでウィンドウズ2000でやっている人いないかな 

90 :NAME IS NULL:04/03/05 22:08 ID:???
トリビア

SQLiteの作者はTclのハッカーである。

91 :NAME IS NULL:04/03/05 22:56 ID:???
>>89
何がうまくいかんの?
俺もちょっと前にJDBC接続してみたが、普通に使えたぞ。
日本語以外は。

92 :NAME IS NULL:04/03/12 00:40 ID:RfCZzlsO
>90
15ふ〜ん

93 :NAME IS NULL:04/03/15 16:28 ID:???
>>36
擦り寄って来たね♪

94 :NAME IS NULL:04/03/17 21:15 ID:InsPnmlY
>>93
そーすきぼんぬ

95 :love.chu.love@dj.r.ne.jp:04/03/17 22:15 ID:???
love.chu.love@dj.rmail.ne.jp

96 :NAME IS NULL:04/03/18 06:01 ID:tomkhCwI
>94
ttp://www.itmedia.co.jp/news/articles/0403/13/news017.html

97 :NAME IS NULL:04/03/18 06:31 ID:jR84uLHZ
a

98 :80:04/03/18 08:08 ID:???
>>96
SQLiteがきたからMySQLが戻ってきても・・・
ストアドとかテクニカルな事がしたかったらポスグレ使うし
規模がデカくなったらOracle使うし・・・

SQLiteManagerいつのまにか日本語化されてますね。
自分で日本語化ファイル作ってつかってますた。


99 :NAME IS NULL:04/03/18 21:45 ID:Us3+nbT1
>>96
ほんまや。必死だな藁
つーかSQLiteが当て馬になってんのかなあ。
それはちょっと政治的で嫌だなあ。
まあ俺はWebプログラマじゃないからPHP使わないけど・・・


100 :NAME IS NULL:04/04/14 10:02 ID:+XCDs49F
http://pcweb.mycom.co.jp/special/2004/php5/007.html

トランザクション使わずにぐるぐるINSERTしてます。


101 :NAME IS NULL:04/04/17 21:04 ID:PagAZNLN
>>100
なんか気の毒だね。
教えてあげた方がいいかもw

102 :NAME IS NULL:04/04/17 22:49 ID:x7N6mXCW
>>100, 101

先日教えてあげました.
すでに訂正が入っていますね.SQLite の方が速かったみたいです.

103 :NAME IS NULL:04/04/18 03:33 ID:???
俺のテストによればトランザクションでまとめてインサート
してもデータの数が500万件とかになると、インサートは
遅くなる。多分Bツリーのページ溢れによる再構築か
ディスクアクセスに時間がかかってるのだと思う。
どうすれば速くなるのかまだ実験中。

104 :NAME IS NULL:04/04/18 21:41 ID:hUv2zobH
>>98
>ストアドとかテクニカルな事がしたかったらポスグレ使うし
>規模がデカくなったらOracle使うし・・・

だな。MySQL、もうイラネ

>>103
素朴な疑問なんだが500万件をまとめてインサート
するようなことは頻繁に発生するの?
ていうかデータの絶対量が500万件を超えると
1件の挿入でも遅いってこと?
前者ならあんま気にせんでいいような。


105 :NAME IS NULL:04/04/18 23:03 ID:???
>>104
毎日500万件のテーブルに4000件程度の挿入をまとめてやるんだが
2000件目くらいから極端に遅くなる。CPUをフルに使ってズバズバやって
欲しいのだが、CPUの使用率も下がってしまう。どこにボトルネックがあるのか
いまいち掴みきれてない。

106 :NAME IS NULL:04/04/19 03:40 ID:???
>>105
CPU が下がってるときのディスク I/O は?

107 :NAME IS NULL:04/04/19 23:30 ID:???
>>106
どれくらいの頻度でアクセスしてるのかよくわからない。
アクセスランプ壊れてるんだわ。すまん。
トランザクション中のジャーナルファイルの更新が遅い感じ。
最適化のFAQ読んでたらジャーナルファイルをOFFにできる
みたいなんでそれやってみるわ。

108 :NAME IS NULL:04/04/19 23:51 ID:ZwzacxDL
>>105
なるほど。
オイラは「500万件という(ある意味小規模とは言いにくい?)
量のアクセスで遅くなるなら、素直にあきらめて別のものを使うのが
SQLiteにとって吉」という意見なのだが…どうかね?

SQLiteはシンプルでコンパクトであり続けて欲しい。
…1000アクセス/1日未満のサイトとか、ちょっとしたアプリで
バークレーDBよりもうちっと構造化されたDBが欲しいという場合に
フリーで使えるメジャーなDBライブラリになって欲しいのよね。
getopt的プログラマの共通言語「ああ、アレね」みたいな。


109 :NAME IS NULL:04/04/20 00:21 ID:???
>>107
ん? iostat とかで見れないすか? Windows とかだったらスマソ。

110 :NAME IS NULL:04/04/20 16:47 ID:???
>>108
俺はCとTcl/Tkを好んで使うんでSQLiteにはとても
親近感を持ってるんだよ。使いたいんだ。

>>109
うん。Windows。すまん

111 :NAME IS NULL:04/04/24 22:57 ID:???
>>110
そか、悪かった。
しかし逆説的に
>毎日500万件のテーブルに4000件程度の挿入をまとめてやるんだが
>2000件目くらいから極端に遅くなる。
未満ならなんら問題ないことを実証したヨカン

ところで先日クロスコンパイルに失敗。
見た感じではさくっといきそうな感じだったんだが_| ̄|○


112 :NAME IS NULL:04/04/25 23:30 ID:???
PocketPCで使える?

113 :NAME IS NULL:04/04/26 02:26 ID:ORUhb82C
>107
sqliteInt.h の
# define TEMP_STORE 1
ですね.俺もC/Win 環境で使ってるので続報期待.

ところで ver3 の開発が始まったみたいだね.
今のところ BTree に手が加えられてるみたいだけど詳細は不明.
個人的には圧縮関連ルーチンが取り込まれないかと期待.

114 :NAME IS NULL:04/04/26 11:19 ID:fJzkQNNx
SQLiteManagerを操作中
Tableを間違って消しちゃったみたいなんですが
DBの中身を見るとテーブル定義もデータも残ってるみたいなんです。
(でもselect * from sqlite_masterしてもでてこない)

これって救出する方法ありますか?


115 :NAME IS NULL:04/04/26 18:15 ID:gZB0Gfdi
あの、ちょっとMySQLについて教えて頂きたいです、このスレッドでいいですか?
調べてもわかんなくって。。。
バカにされても仕方ない話なんですけど、SQLをバッチファイルで流したいんです。
(create DATABASE ・・・ を直に手で打つんじゃなくて、「test.sql」というバッチファイルで実行したい)

Windows環境なんですが、どうやればよいでしょうか?
教えて下さると、とっても嬉しいです。よろしくお願いします。


116 :NAME IS NULL:04/04/26 19:15 ID:???
>>115
mysql <test.sql
つーバッチファイルつくりゃすむだろ

117 :NAME IS NULL:04/04/27 00:22 ID:???
なんでmysqlの質問がここなんだよw


118 :NAME IS NULL:04/04/27 09:24 ID:???
warata

119 :NAME IS NULL:04/04/27 23:17 ID:???
前言撤回。
>…1000アクセス/1日未満のサイトとか、ちょっとしたアプリで
とか言ったが、
http://www.sqlite.org/cvstrac/wiki?p=WhenToUseSqlite
を見ると
もちろんサイトがどれだけヘビーにDBを使うかによるが
お堅く評価して100,000 hits/day程度ならまだギリまで行ってなくて
テストではその10倍くらいまで行けたぜ
とあるな。<(_ _)>

あとクロスコンパイルはOKだった。PoketPCてのはわからんが
IntelのLinuxでコンパイルしてPowerPCのLinuxで動いたよ。

自宅サーバをOpenBlockSにでもしてみようかなぁ。静かそうだし

120 :NAME IS NULL:04/04/27 23:52 ID:???
おお、PocketPCってWindowsCEのPDAなのね。
ちょっと説明すると
SQLiteってのはDB1個が1個のファイルで、サーバデーモンってのは
特に必要ない。
ソースをコンパイルすると出来上がるのは単純には2個のファイル。
ユーザがCでプログラム組んでアクセスできるための.so
(Windowsでは.dll)と、SQLインタプリタの実行ファイル。
まあ、他にもシンボリックリンクとかインクルードファイルもできるけどね。
あと、ファイルを使わずメモリだけで済ますオプションもあるから
PDAには「向いてる」かと。

イメージ的にMS Accessの.mdbの利用方法に近いのかな…
商用利用もOKであるのが決定的に違うところか?


121 :NAME IS NULL:04/04/28 10:08 ID:zZMnOcUG
>>120
Accessのmdbは商用利用ダメなんですか。そうですか。

バックアップって.dumpでsqlファイルとしてとってます?
容量が小さいならファイルまるごとコピーでも良いのではないかと
思っておるのですが。
(というか.dumpはバックアップ用なのか?)

122 :112:04/04/28 23:29 ID:???
やっぱりそうですよね。
石の違いを吸収してしまうDBファイル形式。
母艦でOracle等の親DBからデータを切り出したSQLiteのDBファイルを作成。
PDA用のアプリは慣れたSQLを使って作成可能。

os.cを見てみたのですが、PDAは所詮利用者ひとりだけなので移植はそれほど
難しくなさそうな気がするんだけど。もしかしてほとんどそのままコンパイル可能?
PocketPCアプリ作ったことがないんでよくわからないので聞いてみたのですが。
PDAで動作すると商業ベースにも乗って意外とそっち方面でも流行るのでは?

123 :NAME IS NULL:04/04/29 00:18 ID:???
Accessのmdbが商用利用不可というのは初耳なんだが

124 :120:04/04/29 11:12 ID:???
失礼。ちょっと脳にウィルス入ってた。


125 :NAME IS NULL:04/04/29 20:07 ID:???
>123
たしか
accessのライセンスがないとダメだよ。


126 :NAME IS NULL:04/04/29 21:47 ID:WDx32sxT
>>121
dumpはバックアップ用じゃなくて、他のDB、というか
Postgresqlにデータを移すために使うんだよ。
バックアップは君のいうようにDBファイルを圧縮しとけば
いいと思うよ。差分は取れるのかどうかしらない。

127 :NAME IS NULL:04/04/30 08:57 ID:y7ZGN/fc
>>125
たぶんライセンスじゃなくて信頼性とかの問題で
商用利用不可なんじゃないかと。

128 :NAME IS NULL:04/04/30 21:19 ID:VZceiIAf
信頼性というのならsqliteは実績が無いから商用につかうのは
どうかと思うけど・・・。なんかsqlite使った有名アプリない?
PHPとかは無しで。

129 :NAME IS NULL:04/04/30 21:36 ID:???
>>128
有名かわからんが、TeamSpeak
http://www.teamspeak.org/

130 :NAME IS NULL:04/04/30 23:41 ID:???
調べずにカキコするが
sqliteのperlへの実装ってある?

131 :NAME IS NULL:04/05/01 00:11 ID:FaMfpc9Z
sqliteってシングルユーザなDBみたいですけど
ロックってどんなかんじ? なんも考えず select for update
でOK?

132 :NAME IS NULL:04/05/01 01:20 ID:???
>>130
http://search.cpan.org/~msergeant/DBD-SQLite/lib/DBD/SQLite.pm

133 :NAME IS NULL:04/05/03 08:02 ID:???
>>131
トランザクション開いてアクセスする。

(トランザクション閉じるまで他の人は読み込みも蹴られますた。
SQLite擁護派として何かもう一言フォローしたいところだが
漏れも調査中なんでスンマソ)


134 :NAME IS NULL:04/05/03 23:01 ID:AtGIA8g9
SQLiteに500万件なんてナンセンス!

135 :NAME IS NULL:04/05/03 23:57 ID:6ET0kvN6
>>133
最初に開いたのだけ書き込みできたんじゃなかったっけ。

>>134
うるせーバカ

136 :NAME IS NULL:04/05/04 04:30 ID:EWylYRto
>>135
だって意味なくね?
実験するのは大いにかまわないけど、なんか必死なのが痛い。
文字通り 軽量 のデータベースなんだからさ。

137 :NAME IS NULL:04/05/06 08:18 ID:YTLAADWx
>>136
言い回しは好きじゃないけど内容的には賛成。
SQLiteは好きだし便利だけど、データ量が多いと
その真価は発揮できないと思う。
(処理速度よりもバックアップとかのメンテの面で。)

俺の場合500万件なんていうたくさんのデータを扱う案件は
今後でてこないと思うのでSQLite使いつづけますが。
10万件程度なら全然問題ないし。

138 :NAME IS NULL:04/05/06 14:08 ID:kuYQWsdl
Windows向けGUIアプリのファイル形式としての応用に挑戦中。
オブジェクト指向によるプログラミングでよく使われるシリアライズと比べて、
1.ランダムアクセスがスマートにできる
2.ファイルの全てをメモリに読み込む必要が無い
3.ある程度の標準機能(ファイルの最適化とか)を持つ
あと、多言語対応に向けたアプリ中のロケール文字列も、
こいつにぶち込んでおけば海外の人が勝手に翻訳してくれるのではないかと期待できるかな。

まあまずは動くところまで作らないとね。

あと、今のところ単純なラッパーを越える使い勝手のC++ライブラリが存在しないんですが、
ACCESS VBAのADODB.Recordsetライクな使いやすいアクセスライブラリってどこかに落ちてませんかね?
板違いならスマソ。

139 :NAME IS NULL:04/05/06 18:29 ID:YTLAADWx
>>138
なんかすごいこと言いますね。
ロケール文字列をDBに入れるってすげーありえねー。
C++でGUIGUIしてる人の発言とは思えんw

RSSリーダーのGlucoseはSQLiteを内部にもってますね。

私はGUIアプリはマウス片手にDelphiってるんで
ttp://www.myprofile.ne.jp/blog/archive/moge/41
を参考にすれば簡単に作れそう。

Cなら
ttp://www.randynetwork.com/blog/87
かな。

140 :138:04/05/06 19:26 ID:kuYQWsdl
>>139
>なんかすごいこと言いますね。
>ロケール文字列をDBに入れるってすげーありえねー。

これですが、sqliteは文字列の入力チェックをほとんど何もしていないので、
ほとんど「何でも」入ります。
S-JISでもEUCでも区別なく入るようです。
簡単なチェックをしましたが、部分一致などもとりあえず問題無いようです。
なので、アプリ中で用いるWindowsロケールに依存した(要するに各国語)の
文字列リソースを入れる容器としては充分使えそうな気がします。

ライブラリのほうは家に帰って試してみます。ありがとう。


141 :NAME IS NULL:04/05/06 21:26 ID:S/PbMEEw
>>2

142 :NAME IS NULL:04/05/07 05:27 ID:???
>>140
> ほとんど「何でも」入ります。

>>139 はそういう話を言ってるわけじゃないだろう。

143 :NAME IS NULL:04/05/07 09:40 ID:uvn4YUcn
SQLiteなら、DBとしての利用という範囲で考えずに、
>>138 が言う「ファイル形式としての応用」への挑戦はありえるんじゃない。
XMLより使いやすい場合があるかも。

144 :NAME IS NULL:04/05/08 06:16 ID:Gf03gDXu
>>143
それはどうでしょう.いきなりファイル形式が変化することもあるんでは?
同様に内部コードが UTF-8 と ANSI の場合でファイル形式変わってしまいませんかね?
(調べてません.すんません)
基本的に非圧縮だし,と思えば亜種で圧縮サポート形式も出てきていて,標準には向かないような.
以上は交換用途としての(.pdfのような)ファイル形式としての話.
アプリのデータ保存用で,ある種独自のファイル形式としてなら,大いに結構.
公式にもその用途を謳っていますしね.でも比較対象はXMLではないと思います.

145 :NAME IS NULL:04/05/08 08:01 ID:???
ロケール文字列はDBに入れないほうがいいと思う。
なぜかというとsqliteのツールが無いとユーザーが
新しく追加できないから。UTF-8のテキスト形式が
シンプルでいいと思う。
初期設定の保存とかは便利でいいと思う。

146 :NAME IS NULL:04/05/08 15:04 ID:???
>>137
軽量ってのは、本体のコードのことで
DBのサイズでは無いと思うんだけど
どうなんでしょう

147 :NAME IS NULL:04/05/08 16:36 ID:???
locale文字列.....
ADODB.Recordset.......
ファイルシステムの代わりに最適........

上記の話題を見た直後の私の第一印象、
「はぁ........もうダメポ」

148 :NAME IS NULL:04/05/08 17:56 ID:???
>>147
なんか間違えたこと言った?変なこと言ってたら
訂正するから指摘してくれ。

149 :NAME IS NULL:04/05/08 18:38 ID:???
>>148
それほどには奇天烈なことは言ってないと思うがちょっとうなってしまう
部分はある。
ロケール文字列については、
 { 言語, 通し番号 } → 文字列
ができればいいわけだよね。
現状は言語ごとに分かれたファイルから通し番号でとってくる
やり方が主流だと認識してる。

「すでにそのアプリが内部データをSQLiteで持っているので、
ついでに入れてみた」というのりでなら、まぁそれは設計者が
選択したってことでいいかと思うが、
すでに確立した感のある方法(自動生成ツールがあったり、
その解説ドキュメントがあったりして他の開発者が
共通の知識を持っている)をあえて捨てるメリットがあるかは疑問。

新しいやり方にチャレンジする精神は立派。完成させてみて
発見したり実感したりすることもあると思うのでガンガレ

150 :NAME IS NULL:04/05/09 14:03 ID:6b2QA1ug
>>149
>すでに確立した感のある方法(自動生成ツールがあったり、
>その解説ドキュメントがあったりして他の開発者が
>共通の知識を持っている)をあえて捨てるメリットがあるかは疑問。

ソースキボン
プログラム板のスレタイトル眺めて、多国語対応でググってみたが、
いいサイトが見つからない

151 :NAME IS NULL:04/05/09 15:45 ID:???
>>150
おいらが言ったのは gettext とその周辺ツール。と、その類似品。

えっと、どういうものかつうと
(1)まずCで普通に(英語メッセージで)プログラム組む。
(2)そしたらソースをツールに通す。するとソース内の文字列リテラル
の頭に目印がつく。
(3)同時に、文字列が抜き出された「リソースファイル」ができる。これには
通し番号がつく。
(4)リソースファイルの「日本語版」をつくる。
(5)次回コンパイルする前に、専用のプリプロセッサに通す。
すると、ソースの文字列リテラルの部分が「文字列をリソース
ファイルからとってくる関数」に置き換わる。
(6)プリプロセスされたソースをコンパイル。
というやつ。たまに雑誌で解説記事あったりする。

おいらがこないだまでメンテやってたソフトでもそういう
仕組み(の別物)だった。

ソースイメージ
printf( "this is a message\n" )

printf( "><this is a message\n" )

printf( gethogehoge( lang, 100 ) );

リソースファイル英語
100,this is a message\n

リソースファイル日本語
100,これはメッセージです\n

その昔shi3z氏も似たようなプリプロセッサ
作ってた(たしかそのときの動機は日本語対応してないコンパイラで
SJISの文字をつかえるようにすることだった)。そんでその副作用
というか派生で日本語の変数名が使えるようになっていた気がする。

windowsも似たしくみのはず。

152 :139:04/05/10 08:14 ID:Is7LBGNM
>>147
私も最初思ったw
もまえ本当にC++でGUI作ってるのかと。VB極めたあと
MFCでHelloWorldってるだけちゃうんかと。
まー、>>149の言うようにそんなにおかしい事を言ってるわけでは
ないわけで・・・

まぁ、>>138よ。言いだしっぺなんだからごちゃごちゃ言う前にやってみれ。
ソース晒してくれれば協力するし。

ただ、DBをこういう風に使うのはなんか間違ってると思うが。
リレーション?なにそれ?っていう状況になるわけで。

153 :NAME IS NULL:04/05/10 10:20 ID:6CmpQPbS
> リレーション?なにそれ?っていう状況になるわけで。

それは、そう思った。
ただ、型なしの仕様が正しいと考える SQLite の面白い所で、
この考えは、リレーションを厳格には考えないという所に行くんじゃないかと
解釈してるけど、どう思う ?
キーさえ、しっかりしていれば、それで出し入れするデータは、
何だってかまわないという事になればリレーションとは違うかな、と。

以下の原文は
http://www.sqlite.org/datatypes.html

SQLiteのデータ型
第1節 型なし
SQLiteは「型なし」である。これは、そのカラムに宣言されたデータ型に関わらず、どのテーブルのどんなカラムにも君が望むあらゆる種類のデータを蓄積できる、という意味である。(このルールのただ一つの例外は、次の第2節を見よ。)この動作は仕様であってバグではない。
データベースはデータを蓄積し、復元しなければならないものであって、どんな形式のデータが入るかはデータベースには関係のないことである。
他のほとんどのSQLエンジンに見られ、SQL言語の仕様に定められている強い型システムは、間違った仕様である。この間違いはインターフェースの中に現れる実装の一例である。
SQLiteは、こうした間違った仕様の克服を求める。あらゆる種類のデータをあらゆるカラムに蓄えることを君にまかせ、データ型の定義に柔軟さを認めることによって。

154 :NAME IS NULL:04/05/10 20:37 ID:6CmpQPbS
>>138
思い出した。C++ から使えるやつで、
> ACCESS VBAのADODB.Recordsetライクな使いやすいアクセスライブラリ
ttp://www.microsoft.com/japan/msdn/netframework/downloads/
ttp://sourceforge.net/projects/adodotnetsqlite
この2つからクラスライブラリどころか、
cl.exe っていう C++コンパイラも SQLite も落っこちてくる。
しかも十分に ADODB.Recordsetライクな使いやすさだ。
Windows 使ってて、まだ持ってなかったのかい。

155 :NAME IS NULL:04/05/12 14:42 ID:???
http://www111.sakura.ne.jp/~hanyan/todouhuken/00-chizu/futama-nihon-moe2.jpg

156 :NAME IS NULL:04/05/18 16:19 ID:ZavbGlbD
SQLite コマンドチュートリアル(翻訳版)
ttp://www.net-newbie.com/sqlite/sqlite.html
SQLite SQLリファレンス(翻訳版)
ttp://www.net-newbie.com/sqlite/lang.html

157 :NAME IS NULL:04/05/19 18:07 ID:???
SQLiteをC++で使いたいけど英語が苦手なんで
昨日から少しずつ翻訳してるのですが、
うまく日本語になってないところ・・・というより
意味不明なところが多すぎる _| ̄|○

http://tria.s31.xrea.com/sqlite/c_interface.html


158 :NAME IS NULL:04/05/20 17:36 ID:???
ODBCドライバはファイルDSNには対応していないのかな?
やろうとしたらエラーが出たんだけど。


159 :NAME IS NULL:04/05/23 11:50 ID:???
>>157
ぐっじょぶ!

160 :NAME IS NULL:04/05/25 01:33 ID:???
未出のようなので一応リンクしておきます。

SQLite ODBC Driver
http://www.ch-werner.de/sqliteodbc/

161 :NAME IS NULL:04/05/25 01:34 ID:???
SQLite Control Center より使えるかどうかわかりませんが一応これも

SQLite Database Browser
http://sqlitebrowser.sourceforge.net/

162 :NAME IS NULL:04/05/25 01:52 ID:???
>>160
同じ所に JDBC ドライバもあるんだけど、誰か使ってる人いないかな。

http://www.ch-werner.de/javasqlite/

それにしても、アプリに組み込みできる、シンプルで、使い勝手が良くて、緩いライセンスの
データベースがあるって素晴らすぃ。

163 :NAME IS NULL:04/05/25 08:21 ID:???
>>161
カコイイ!でも文字コードがああああああ

逝ってくる。

164 :NAME IS NULL:04/05/25 10:14 ID:???
>>163
ttp://www.kumaryu.net/cgi-bin/diary/?date=20040110
で修正の手掛りが書かれているんだけど
C言語な人解らないかなぁ...


165 :NAME IS NULL:04/05/25 10:52 ID:???
文字コードがどうかしたの?

166 :NAME IS NULL:04/05/26 08:39 ID:???
Qt 使ってるのか。

167 :NAME IS NULL:04/05/26 10:49 ID:OP8x6gI1
ほんとだ。Windows版バイナリだと、日本語データ表示は文字化けだあ。
これで入力すると ?? というデータになるしね。Qtは知らないからなあ...

168 :sage:04/05/26 13:14 ID:YjzGdGIt
外国製でもきっちり日本語処理ができるのって、どういうのかな。
Unicodeを使ってるドットネットのものは、大丈夫なのが多いみたいだけど、
Javaのもいいか ?

169 :163:04/05/26 13:19 ID:???
>>167
最初、自分がINSERTしてるデータがEUCだったので表示されないのかと
思って「逝ってくる」ってパピコしたんだけど
その後UTF-8で入れなおしてもダメ。
私もQtなんて知らないです・・orz

170 :NAME IS NULL:04/05/26 20:21 ID:+wg1Ei5Q
SQLiteCC を日本語化してみた人です.
SQLite Database Browser のソースをちらっと見ましたが,SQLite 本体が
UTF-8 enable になっていないので UTF-8 は通らないようです.
で,SQLite DB Browser の QT が日本語を通すようになっているか調査した人いますか?
QT を触ったことありませんが QT 自体は日本語処理OKと聞きました.
ちょっといじってみます.

171 :NAME IS NULL:04/05/27 15:22 ID:R/pbcO4/
ちょっと前の話題の、ロケール文字列をデータベースに入れておくって話。
webで C# のサンプルコードに当たっているうちに、たまたま、それをやっているやつを発見。
http://www.wrox.com/books/0764557599.shtml
「 Professional C#, Third Edition 」という今月出た本のダウンロードコードにある。
第1版の翻訳は持っていて、中身が濃い良い本。新版もほしいな。(翻訳出版してね)
ch17code\Localization\DatabaseResourceReader の中にあるよ。

やっていることは、ロケール文字列などのカルチャ固有のリソースにアクセスする標準のクラス
ResourceManagerクラスを継承して、自前の DatabaseResourceManagerクラスを作ってしまう、
という所がミソ。
普通なら、リソースファイル名か、埋め込みリソース名を指定する所で、
データベースを指定するという以外は、普通と変わらないわけだ。
これ、使えそうだよ。サンプルでは SQL Server を使ってるけど、SQLite 向きだね。


172 :NAME IS NULL:04/05/27 18:11 ID:???
こんなんもありますた。
ttp://www.manoeuvre.net:8080/wiki/index.php?SQLite%CD%AD%B8%FA%B3%E8%CD%D1%B7%D7%B2%E8


173 :171:04/05/28 09:03 ID:+ZceNJch
このライブラリ使って、ロケール文字列を SQLite に入れておくテストしたら、あっさり成功しました。
普通のリソースを使う既存のコードも、1行書き換えるだけ。
あとは SQLiteで
create table Messages ([key], [ja-JP], [en-US], [de-DE], [fr-FR])
なんてして、データを入れておけば、勝手にシステムのカルチャに合わせた文字列を表示する。
プログラムからカルチャを変更するような使い方も簡単だな。
標準クラスを継承するクラスの作り方・使い方のお手本みないなもんだ。

174 :163:04/05/28 15:10 ID:???
SQLiteのMLができたってー

http://www.net-newbie.com/sqlite.html

175 :NAME IS NULL:04/05/29 13:30 ID:???
ttp://oku.edu.mie-u.ac.jp/~okumura/php/db.html

176 :NAME IS NULL:04/05/29 15:08 ID:???
まとまったリファレンスはけん
http://www.rakuto.net/study/htdocs/sqlite/

177 :NAME IS NULL:04/05/29 15:43 ID:???
テキストストレージとして使うってのはありなのかな。
メモ帳、日記、掲示板みたいな、付帯属性のあるプログラムのバックエンドとして使いたい。

178 :NAME IS NULL:04/05/29 18:57 ID:???
>>177
おおあり

179 :NAME IS NULL:04/05/30 02:20 ID:???
>>178
そうでつか。今作ってるデータ集計用のアプリが完成したら、PIM ソフトを作ってみようと
思っていたので心強いです。どうもありがとう。
日本語の全文検索あたりが難関かなと思ってます(現在ノー・アイデア)。

180 :NAME IS NULL:04/05/30 06:23 ID:???
>>179
めんどくさいからlike演算で・・・。

181 :170:04/06/01 04:17 ID:???
SQLite Database Browser の日本語化をやろうとしましたが,
オリジナルの Windows 版は Qt の製品版を購入して作ったらしいので,
Qt を持っていない私には開発できないことがわかりました.残念.

>>179
SQLite 自身に手を入れてもいいかもしれませんね.
正規表現パッチとか勝手に作っちゃいます?

182 :NAME IS NULL:04/06/01 07:29 ID:???
>179
日本語は全てUTF8に変換してDBに突っ込む。
突っ込む際は、表示用のオリジナルのテキスト(フィールドA)のほか、
・全角英数記号を半角化
・半角カナを全角化
・ひらがなをカタカナ化
・無駄な空白を取り除く
等の処理を行ったテキストも別フィールドBに突っ込む。
検索の際は同じ処理を行ったUTF8のテキストをフィールドBに対してLIKE演算。
という感じで簡易あいまい検索を実現してま…

183 :174:04/06/01 08:21 ID:???
>>181
フリー版での国際化はこれでできそうなのにね。
http://www.asahi-net.or.jp/~hc3j-tkg/qt-i18n/index-j.html

184 :170:04/06/01 22:58 ID:???
>>183
私もそのサイト見ましたがだいぶ情報が古いです.Qt-1.41 に対するパッチとかで,
すでに本家では別の方法で国際化"自体"は取り入れられています.
問題は SQLite Database Browser 自身が全く国際化を意識せずに作られている点です.
ちなみに Qt の Windows 用フリー版は 2.x までしかなく,SQLite Database Browser は 3.2, 3.3
で作られています.

>>182
興味深い方法ですね.それって常套手段なんでしょうか?


185 :182:04/06/02 00:00 ID:???
>>184
適当に自分で考えただけなんで、常套手段なのかどうかは全然わかりません。
とりあえずこうしておかないとパフォーマンスが悪いと思うんで…
というかまずRDBは全文検索には向かないと思うんですよね。


186 :157:04/06/19 07:51 ID:???
ver 3.0 alpha 来ましたね
UTF-16使えるようになったのかな

187 :NAME IS NULL:04/06/24 22:59 ID:???
SQLite のサイト、いつのまにあんなデザインになってたんですか?

188 :NAME IS NULL:04/06/25 13:19 ID:???
>>187
私も気づかなかったー。
グラフィカル。でもやっぱりシンプル。良い。

189 :NAME IS NULL:04/06/28 20:24 ID:???
VB6で3を使う方法が書いてあるページ探し中・・・・・・・
だれか

190 :NAME IS NULL:04/06/28 21:15 ID:???
>>189
ODBC経由は駄目なの?


191 :NAME IS NULL:04/06/30 09:54 ID:???
>>190
ODBCを使うと配布やインストーラ作成が大変そうな気がするのですが、どうなんでしょう。
一般アプリの組み込みDBとしたいので。

・・・バージョン2使おうかな・・・

192 :NAME IS NULL:04/07/01 10:44 ID:mj80YqiM
>>191
そういう用途だと、インストールの点で、ODBCを使うのは面倒そう。
VB.NET にすれば ODBCはいらないけれど、.NET Framework が入っているかが問題になるし。

193 :NAME IS NULL:04/07/01 17:21 ID:QhIip2ce
>>186
なってるみたいですな。
http://sqlite.org/version3.html

自作プログラムは大して開発が進んでるわけでもないので、
さっそくVer3に移行しようかな。

194 :NAME IS NULL:04/07/01 20:08 ID:???
>>2またお前かよ、なんなんだよ「2」ってのは、何か楽しいのか?お前さぁ、みんなが楽しく話してるところに近付いただけでススーっと目を合わさずに去られたって事ってないか?
なに? いつだってそうなのか?まぁ、そうだろうな。一般社会ではお前みたいにキモいヤツは相手にしたくないんだよお前はネットの中でも「おマメ」みたいなもんだからな
引きこもった挙げ句、朝からネットにかじりついてスレが立つのを一日中待ち、すかさず「2」と書き込む。 つまんねえ人生だな
みんなが書き込む掲示板に「2」って書き込んだことで自分も社会に参加してるつもりになってんだろ
それにしてもさぁ、もう少し考えろよなんとか社会復帰しようと一晩中考えて出来たギャグが「2」かよ!!
おまえさぁ、一度外に出て人が話してるところでいきなり「2!」って言ってみろよ!もうダメなんだよ、無理なんだよ、お前には
ネット社会ですらコミュニケーションとれてないじゃんわからないだろうけどさぁ
みんな苦虫を噛み潰すような目でお前の自信作の「2」を見てるんだよそう、もう終わりにしようよ、この先楽しい事なんかないんだよ、きっと。

195 :NAME IS NULL:04/07/02 23:02 ID:???
ぬおーデータ変換が面土居。

196 :NAME IS NULL:04/07/09 11:34 ID:nSC8GXrZ
Ver3のsqlite3_execにUTF-16直接つっこんじゃ駄目?

197 :NAME IS NULL:04/07/09 16:12 ID:???
SQLite ODBC DriverがSQLite 2.8.14になりました。

ttp://www.ch-werner.de/sqliteodbc/



198 :NAME IS NULL:04/07/16 23:10 ID:RV+8pVD1
PHP 5.0.0 Released! [13-Jul-2004]
SQLite has been bundled with PHP.

199 :NAME IS NULL:04/07/23 13:33 ID:???
SQLite Delphi Components
SQLite 3.0 components released
ttp://www.aducom.com/sqlite/



200 :NAME IS NULL:04/07/29 22:45 ID:???
「SQLite」 (Chris Newman 著)
http://www.amazon.co.jp/exec/obidos/ASIN/067232685X

201 :NAME IS NULL:04/08/02 15:53 ID:CPTZa5VA
同上
2004年10月発売予定(SAMS Publishing)。ただいま予約受付中。

202 :NAME IS NULL:04/08/05 09:22 ID:???
>>201
200のは、Macmillan Computer Pub ; ISBN: 067232685X ; (2004/09/30)になってるけど
別の本ですか?

203 :NAME IS NULL:04/08/08 00:15 ID:???
>>185
>というかまずRDBは全文検索には向かないと思うんですよね。
つか、SQLiteについてはRDBMSっぽくない使い方を考えてみようや。
もともとは軍事アプリで使うためにバークレイDBに皮かぶせたもの
だったらしいし、リレーショナルっぽくないところで
なんか面白いことできそうな予感しない?

今出てるのって
国際化テキスト検索用
エクセルみたいにA〜Z、AA〜ZZ列
普通にテキスト突っ込んじゃう
とかかな?

オイラは、Lindaのタプル空間にできないかと画策中。
Lindaってなに?→増井氏の記事がわかりやすいので読んでください。
ttp://pitecan.com/UnixMagazine/
の、2002年10月号 「Linda」ね。

204 :NAME IS NULL:04/08/09 13:05 ID:cCyZtPbc
>>202
同じみたいです。
http://www.bookpool.com/.x/7mtopise8m/sm/067232685X

205 :NAME IS NULL:04/08/09 17:17 ID:52OdYyi7
>>203
> Lindaってなに?→増井氏の記事
面白い記事を紹介していただき、ありがとうございました。
こんなものがあるとは知らなかったです。
タプル空間に SQLiteを使うというのは、
SQLiteにプロセス間通信の仲介をさせてみよう、ということでしょうか。
できたら面白い。

206 :NAME IS NULL:04/08/10 05:34 ID:???
>>205
>SQLiteにプロセス間通信の仲介をさせてみよう
そゆことですな。
「タプル空間」って、イベントスプール+αなものだと解釈してます。
そのアルファの部分は、
・型宣言とかしなくても任意の型の任意列数のデータを入れておける
・先頭以外からもとりだせる
・パターンマッチを適用して取り出せる
・複数マッチしたらとりだされる順番は保障されない(どれか1つがでてくる)
と。
コンピュータにとっては重い要求だろうけど、
えらく簡単なソースでいろいろ表現できるメリットがある、と。
SQLiteは型がないから、エクセルみたいにA〜ZZ列にしておけば、
タプル的なデータが入る。
DBMSなのでパターンマッチで取り出すのもできる。
あとはウェイト処理と、希望に沿うレコードが入ってきたらそれを
通知する仕組みがあれば「タプル空間」になるのかな、とね。

207 :NAME IS NULL:04/08/10 10:09 ID:???
>>204
ありがとう。アマゾンで買ってみる。

208 :NAME IS NULL:04/08/11 20:17 ID:???
SQLiteって、sub select使えますか?

209 :NAME IS NULL:04/08/12 01:32 ID:???
PHP5でいじってます。SQLiteManagerもいい感じ。
ttp://www.zend.com/php5/articles/php5-sqlite.php
↑にPHPで使う文書があって、OOでグリグリいじってるけど
OOなマニュアルは発見できず。誰か場所知ってる人いる?

210 :NAME IS NULL:04/08/18 08:31 ID:???
OO?

211 :まなみ:04/08/19 02:30 ID:GGBYH8Yl
このカキコ見たあなたは4日後に不幸がおとづれ44日後に死にます。
それがイヤならコレをコピペして5ケ所にカキコして下さい。
私の友達はこれを信じず4日後に親が死にました。44日後友達は行方不明・・・・。
いまだに手がかりもなく私はこのコピペを5ケ所に貼り付けました。
すると7日後に彼氏ができ10日後に大嫌いな人が事故で入院しました。

212 :NAME IS NULL:04/08/24 17:59 ID:j0R9/TNS
> OO?
もしかして OOP の OO かな ? オブジェクト指向 ?

213 :NAME IS NULL:04/08/24 22:57 ID:???
>>209
へぇ〜

// create a new memory only database
$db = new SQLiteDatabase(":memory:");

こんなことできるんだ。知らなカターヨ

214 :NAME IS NULL:04/08/31 14:52 ID:???
根本的にsqlを分かってないうえperlで申し訳ないが、
$r=$h->prepare("begin;");
$r->execute();
(大量にデータ挿入)
$r=$h->prepare("end;");
$r->execute();
$r->finish();
としとけば、最後のend;でcommit;の代わりもしてくれる?
データ挿入中に1000件ごとにcommit;投げてるんだけども。


215 :NAME IS NULL:04/08/31 19:24 ID:???
>>209
そうそう。私も探してます。

// create new database (OO interface)
$db = new SQLiteDatabase("db.sqlite");

って書いてあるのに、SQLiteDatabaseクラスに関する
記述はどこにあるねん。


216 :NAME IS NULL:04/09/01 00:09 ID:cIZqANlL
>>209 >>215
すまん、最初何言ってるのか理解してなかった。

PHP5でSQLiteをオブジェクト的に使うラッパークラス(SQLiteDatabase)の
ドキュメントがどこにも見当たらない、ってことね。
確かにPHP5のソースをSQLiteDatabaseでgrepしても、テストコードしかヒットせず。
うーむ…

ttp://www.wiki.cc/php/Sqlite_oop?PHPSESSID=90c148e7399077180d696bfdd241288e

によると、PHP自身にクラスメソッドを問い合わせる方法が書いてあって、
SQLiteDatabase
SQLiteResult
のメソッド名一覧は、ある。

で、これとPHP5のソースをよく見比べてみたら、鍵は
php-5.0.1/ext/sqlite/ にある sqlite.c だな。

997行あたりに
REGISTER_SQLITE_CLASS(Database, db, NULL);
REGISTER_SQLITE_CLASS(Result, query, NULL);
REGISTER_SQLITE_CLASS(Unbuffered, ub_query, NULL);
REGISTER_SQLITE_CLASS(Exception, exception, zend_exception_get_default());
とあるから、おそらく

SQLiteDatabase, SQLiteResult, SQLiteUnbuffered, SQLiteException

の4つのクラスが定義されてて、その他はない。

この4クラスそれぞれに
function_entry sqlite_funcs_db[] = {
PHP_ME_MAPPING(__construct, sqlite_open, NULL)
/*PHP_ME_MAPPING(close, sqlite_close, NULL)*/
PHP_ME_MAPPING(query, sqlite_query, NULL)
PHP_ME_MAPPING(queryExec, sqlite_exec, NULL)
PHP_ME_MAPPING(arrayQuery, sqlite_array_query, NULL)
PHP_ME_MAPPING(singleQuery, sqlite_single_query, NULL)
PHP_ME_MAPPING(unbufferedQuery, sqlite_unbuffered_query, NULL)
PHP_ME_MAPPING(lastInsertRowid, sqlite_last_insert_rowid, NULL)
PHP_ME_MAPPING(changes, sqlite_changes, NULL)
PHP_ME_MAPPING(createAggregate, sqlite_create_aggregate, NULL)
PHP_ME_MAPPING(createFunction, sqlite_create_function, NULL)
PHP_ME_MAPPING(busyTimeout, sqlite_busy_timeout, NULL)
PHP_ME_MAPPING(lastError, sqlite_last_error, NULL)
PHP_ME_MAPPING(fetchColumnTypes, sqlite_fetch_column_types, NULL)
/*PHP_ME_MAPPING(error_string, sqlite_error_string, NULL) static */
/*PHP_ME_MAPPING(escape_string, sqlite_escape_string, NULL) static */
{NULL, NULL, NULL}
};
のようにメソッドから一般関数へのマッピングが定義されてる。

ところで PHP5.0.1 に同梱されてる SQLite は 2.8.14。
SQLite は 3.0 の安定版がもうすぐ出そうだし、今手を出すのはためらうな…

217 :NAME IS NULL:04/09/01 00:14 ID:???
ちなみに 3.0 系では「型アリ」になる予感

218 :NAME IS NULL:04/09/01 00:34 ID:???
連書きすまソ
久しぶりに本家のwiki見たら、SQLite使ってるひとのコーナー

ttp://www.sqlite.org/cvstrac/wiki?p=SqliteUsers

がえらく増えてる。で、独自にPHPのラッパークラス作ってるひと

ttp://code.jenseng.com/db/

もいるみたいだよ。これはALTER TABLE機能を追加してるのが
特徴らしいが…開発者にとっては似て非なるものをつくられても
十字架が増えるだけだよな。

219 :NAME IS NULL:04/09/01 08:07 ID:???
SQLite はいざとなったらファイルひとつを持ち回せばなんとかなるっていう
手軽さもさることながら、構造も(他のに比べれば)簡単なので、SQLite 自体
の機能を追加したり、省いたりしやすいのが魅力なのかな。
亜種がたくさんできるのは仕方が無いという。

PHP の SQLite への対応は嬉しい。バージョン 3 に対応するときは、2 と 3
を別のモノとして扱ってくれると混乱少ないかなぁ?ふたつ同居になるけど。

220 :215:04/09/01 10:14 ID:???
ほほう、216さん very thanx です。
私もソースハックしてみます。

221 :NAME IS NULL:04/09/18 22:21:10 ID:???
>>206
SQLiteは一般的なRDBMSと違って独立したサーバープロセスを持っていないため、
複数のプロセスから要求をアトミックに処理するという並行プログラミングの
ための基本的な要件がまったく抜け落ちています。

つまり、プロセス間通信の受付けや複数の依頼元からの要求を破綻なく処理する
という中枢部分をゼロから実装しなければならないわけです。
これって結構大変ではないでしょうか。


222 :NAME IS NULL:04/09/19 01:53:33 ID:???
>>221
失礼ですが、 SQLite を使ったことありますか?

223 :NAME IS NULL:04/09/19 21:24:48 ID:???
>>222
僕の知識は古いですか?
SQLiteと一般的なRDBMSとの最大の違いは、アプリケーションプログラムの
内部にライブラリとして組み込まれて動くことだと理解していましたが。


224 :221:04/09/19 21:39:02 ID:???
あ、複数のプロセスから同時にデータベースファイルを update しても
トランザクションは破綻しないのかな?
それならファイルにアクセスできる=タプルスペースを共有できる
ということになりますね

Rindaとかはネットワーク越しにやってるから、ついついそれを基準に
難しく考えてしまいました。


225 :NAME IS NULL:04/09/20 04:32:12 ID:???
チラシの裏でやれよw

226 :NAME IS NULL:04/09/21 09:42:19 ID:???
>>222
失礼ですが、Lindaをご存知ですか?

問い合わせに対してマッチするデータがない場合、誰かがマッチする
データを投入してくれるまでブロックして待ち合わせる必要が
ありますが、SQLにはそのような機能はありません。
これが並行プログラミングの基本要件です。

ポーリングでもして待ちますか? w


227 :NAME IS NULL:04/09/21 11:16:08 ID:???
>>224
>複数のプロセスから同時にデータベースファイルを update しても
>トランザクションは破綻しないのかな?

破綻するようなのはトランザクションと呼ばないと思ってたんだけど、俺の勘違いか?

228 :NAME IS NULL:04/09/21 11:19:23 ID:vUHMrqUQ
>>226
> ブロックして
とは何を何からブロックするのですか。

229 :NAME IS NULL:04/09/21 14:52:36 ID:???
>>228
in() や rd() で問い合わせを実行すると、マッチするデータが出現するか、
タイムアウトするまで待つため、その間制御は帰ってきません。
このことをブロックと書きました。

# これによって待ち行列やランデブーなどのロジックを実現します。


230 :NAME IS NULL:04/09/21 15:01:34 ID:???
>>226
恥ずかしながら寡聞にして存じません。

私の指摘したかった点は、
「SQLiteは一般的なRDBMSと違って (中略) 基本的な要件がまったく抜け落ちています」
についてだけだったのですが、
他の「一般的なRDBMS」ならばそういった要件が満たされるのでしょうか?

231 :NAME IS NULL:04/09/21 22:10:51 ID:???
PostgreSQL LISTEN NOTIFY でググる。

と書いてみたけど、勘違いしている可能性大。

232 :NAME IS NULL:04/09/21 23:36:06 ID:???
変なひとは放置の方向で。>all

233 :NAME IS NULL:04/09/23 14:49:59 ID:GKv/8yXG
↑オイラがふったLindaが元凶だったのか、すまぬ。

もともとの意図はというとね、普通のRDBMSっぽくない使い方で
SQLiteにハマる使い方ってもうないの?
という振りをしたかったわけ。>>203ね。

そんでPHP5.0.1調べて>>216とかカキコしてた時点で、
上記の話は流れたものとおもってたよ。

>ポーリングでもして待ちますか?
って、そうだよな。
>>206ではあんま書かなかったけど、Lindaがやってるコトは、
コンピュータにとってはスゲー重い処理であることは承知してるんさ。
ええと…
誰かがレコードを挿入することをずっと監視してるひとが必要で。
そんで、そのひとが「今、何かを待ってるヤシのリスト」を持っていて、
レコードが入るたびにリストの頭からチェックしないといかん。
マッチしたら、そのひとに通知して、ブロッキングを
解除してあげないといかん訳でしょ。
その通知には多分、セマフォとか使うんだろうけど、
通知するだけでいいかっつーとそうでもなく、
わずかな時間差のために
通知したやつが意図したのと別のレコードを
通知されたやつが取ってしまうということを防ぐために、
ROWIDなどを知らせる必要がある。じゃあ名前つきパイプ?

…ここまで来ると、SQLiteを利用する方法っていうより、
SQLiteを改造する話になってしまうわな。
で、改造元がSQLiteである必然もないのかなと。orz

カキコしたとき考えてたのは、「プロセス間通信をSQLiteにやらせる」
っていうよりは、「いろんなことが簡単なソースで書けるLindaっつーものを、
フリーツールをちょっといじって実現できるのでは?」
てことだったし、やっぱりSQLiteとはズレズレ。(゜д゜)

自分で振っておいて申し訳ないが、
Lindaの話は流し、流し。m(_ _)m

で、普通のRDBMSっぽくない使い方でSQLiteにハマる使い方ってもうないの?

234 :NAME IS NULL:04/09/23 15:02:09 ID:???
3.0 安定版(3.0.7)キタ━━━━(゚∀゚)━━━━ッ!!

235 :NAME IS NULL:04/09/24 10:13:49 ID:???
みんな SQLITE_BUSY が返る場合のことを意識してコード書いてる?

漏れは PHP バインディングを使ってるけど、httpd は普通何枚か fork
してて複数プロセスから同時アクセスがありうるから、厳密に言えば

データベースロック → リトライ*N → タイムアウト → SQLITE_BUSY

という場合のことも考えてコードを書くべきなんだよね。


236 :NAME IS NULL:04/09/26 16:40:39 ID:???
漏れもPHP。
一応エラー意識して書いてるつもりだけど最後はrollback頼みだよ。
insert/updateを二三行う場合の模範例みたいのありますかね。

237 :NAME IS NULL:04/10/22 12:40:19 ID:???
バージョン3のJDBCのWrapperはやくでねーかな。


238 :NAME IS NULL:04/11/07 18:21:53 ID:ipMPK00B
hoshu

239 :NAME IS NULL:04/11/15 17:10:00 ID:???
SQLite data provider for ADO.NET
ttp://sourceforge.net/projects/adodotnetsqlite/

を使っているんですが、last_insert_rowidを取得する
プロパティはどこかにあるんでしょうか。

ご存知でしたら教えてくださいm(_ _)m

240 :メモ:04/11/16 04:18:59 ID:???
>4-5
phpSQLiteAdmin

241 :NAME IS NULL:04/11/16 11:11:39 ID:stpfuOmw
>>239
DataTable.Rows.Count ではどうでしょうか。用が足りませんか。

242 :NAME IS NULL:04/11/16 12:59:26 ID:EESBhBb7
>>239
ADO.NET Data Provider for SQLite のソースを見ると
SQLite3 用の場合なら sqlite3.cs に
[DllImport("sqlite3")]
private static extern long sqlite3_last_insert_rowid(IntPtr h);
と取得できるように宣言されているけれど、使用されていない。
ということは、直接対応するプロバティ等は作られていないのでは。
ADO.NET の標準にないからでしょう。
標準の機能を駆使して間に合わせる方が、早そうに思えます。

243 :239:04/11/17 13:06:43 ID:???
>>241
>>242
ありがとうございました。
いじってみます。

C#, ADO.NETも平行で勉強しているので混乱気味です。

244 :NAME IS NULL:04/11/17 14:20:50 ID:???
>>240
2種類あるようだな。
俺はsourceforgeのを使ってる。

245 :NAME IS NULL:04/11/19 00:41:35 ID:???
SQLite試してみたけど、これって日本語が文字コードそのままで入っちゃうのね。
ラッパー噛ますか、自分でコンバータ書かないと駄目なのかな。


246 :NAME IS NULL:04/11/25 22:23:56 ID:???
エスキューライト? スクライト?

247 :NAME IS NULL:04/11/25 23:04:04 ID:???
(・∀・)シークァライト!!

248 :NAME IS NULL:04/11/26 00:59:48 ID:???
エスキューエル いて

249 :NAME IS NULL:04/12/11 04:26:24 ID:???
ADO.NET Data Provider for SQLite
パスに日本語が入ってるとあぼーんする…orz

250 :NAME IS NULL:04/12/13 09:35:12 ID:oxhzl4xo
SQLiteについて質問。
1、ストアドプロシージャは使えますか?
2、トランザクションは実装されてますか?

251 :NAME IS NULL:04/12/13 23:09:16 ID:???
とりあえず http://www.sqlite.org/lang.html 検索汁

252 :NAME IS NULL:04/12/14 14:08:53 ID:sBR5K/AY
SQLite(DLL)をDelphiで使うには、どのようにしたらいいのでしょうか。

253 :NAME IS NULL:04/12/14 14:22:39 ID:???
>>252
SQLite Delphi Components
ttp://www.aducom.com/sqlite/

254 :252:04/12/14 14:25:33 ID:sBR5K/AY
253>
ありがとうございます。
しかしながら、D6のパーソナルだったり。
データベース関連のユニットないんです。


255 :NAME IS NULL:04/12/15 02:30:36 ID:???
>>250
1. ない
2. されてる

256 :NAME IS NULL:04/12/15 18:58:27 ID:???
>>255
サンクス

257 :NAME IS NULL:04/12/20 12:30:56 ID:U2fIrr/6
ADO.NET Data Provider for SQLite
とりあえず日本語は通るみたいだけど、ファイルのパスどうしてる?

258 :NAME IS NULL:04/12/20 23:31:34 ID:???
>>257
「新しいフォルダ」や、「C:\Documents and Settings\<username>\デスクトップ」など…

ConnectionStringにNew=Trueなんてやっても、

'Finisar.SQLite.SQLiteException' のハンドルされていない例外が sqlite.net.dll で発生しました。
追加情報 : unable to open database file
ハンドルされていない例外 : Finisar.SQLite.SQLiteException: unable to open database file
at Finisar.SQLite.sqlite3.Throw()
at Finisar.SQLite.sqlite3.CheckOK()
at Finisar.SQLite.sqlite3.open(String filename)
at Finisar.SQLite.SQLiteConnection.Open()
(略)

と言われてショボーン。AccessMDB使おうかな

259 :NAME IS NULL:04/12/21 11:14:53 ID:???
ソースも配布されてるんだから、デバッグしてみ。

260 :NAME IS NULL:04/12/21 13:13:02 ID:MSZ78en0
>>258
日本語のパスが通らないぞ、という話。
再現できなくてヘンだぞ〜と思っていたら、自分は古いバージョンを使っていた。
SQLite2 のみ対応していた Version 0.18 (July 01, 2004)
までなら日本語パスが使えていた。Version 0.19 と最新 0.20 では確かにダメ。
とりあえず、デバックのヒントということで。

261 :258:04/12/21 21:17:33 ID:???
情報ありがとうございます。

わかる範囲でソース追いかけてみます

262 :NAME IS NULL:04/12/22 09:24:02 ID:PW+hMuX+
ADO.NET Data Provider for SQLite (Version 0.20) で
日本語のパスが通るようにデバッグしてみました。

Util.cs の 178 行目
public MarshalStr (String str) : this(Encoding.ASCII,str)

public MarshalStr (String str) : this(Encoding.Default,str)
に変更する。(SQLite2 用に)

sqlite3.cs の 54 行目
_encoding = Encoding.UTF8;

_encoding = Encoding.Default;
に変更する。(SQLite3 用に)

この2ヶ所のエンコーディングを、日本語版.NET でなら shift-jis コードを
読めるように Encoding.Default に変更すれば、日本語のパスは通るようです。
ただし、他の動作に問題がないかは、まともに確認してません。
ASCII を Default に変えるのはたぶん問題ないとしても、
UTF8 の方は、わざわざそれを使っていることに理由ありなら、
まずい変更ということになるわけで、ソースをまだ追跡してないので、
あてにせずに自分でチェックして下さい。

263 :NAME IS NULL:04/12/22 14:34:23 ID:???
そもそも、ファイルオープン時にファイル名まで
わざわざIntPtrにしてマーシャリングかけてるのが訳分からん。

sqlite3.cs 76 行目
private static extern int sqlite3_open(IntPtr filename, out IntPtr db);

private static extern int sqlite3_open(string filename, out IntPtr db);

sqlite3.cs 578 行目
int res = sqlite3_open(m.GetSQLiteStr(),out DB);

int res = sqlite3_open(filename,out DB);

でいいような気もする。

264 :NAME IS NULL:04/12/22 15:56:24 ID:TQsgyPh1
お前らってすごいですね。
ちょっぴり感動しました。

私は、カレントディレクトリを変更してファイル名のみで開くようにして逃げました。

何か出来ることあったらやります。
出来ることは少ないので、あんまし役に立てそうに無いですが・・・・

265 :258:04/12/23 15:21:34 ID:???
>>263
同じようにsqlite2のほうもokでした…
涙で画面が見えません(つд`)


266 :262:04/12/24 09:18:51 ID:DruLsR8d
>>263 なるほどです。
そこを変えるなら、エンコーディングには手をつけなくてすむし、
その修正が正しいと思います。
そもそも、ファイル名の文字コードとデータの文字コードが
同じにできるとは限らないでしょうから。
ということで、ひとまずデバッグ完了にしてもいいでしょうね。
ご苦労さまでした。

それにしても、SQLite3 対応バージョンになったら、どうして
わざわざファイル名までマーシャリングしているのか、という謎ですが、
ソースを眺めていると、SQLite3 の UTF-16 サポートに対応しかけて
途中で止まっているように見えます。
sqlite3_open16() を使おうとしたものの、ASCII コードと互換性がないから
このやり方ではまずいと思いなおして、やめにした痕跡(日本では困った残骸)
かな、と思いました。

267 :NAME IS NULL:04/12/24 09:49:25 ID:j+9u7lDN
えっと、おまえらちょっと教えてください。
2歳児程度の知能でわかるように。
今日始めてSQLってものに興味持った。
で、WindowsXP+SQLiteって環境で何かやってみたいなと。
オレはいきなり困ったんだよ。
createなんちゃら、とかでデータベースのファイル作るんだろ?
その作業はいったいどこでどうすればいいのか、と。
試しにコマンドプロンプトから
sqlite hoge
ってやってみた。
当然パスなんか通ってないし何も起きない。
なぁ、助けろお願いします。


268 :263:04/12/24 11:02:26 ID:???
>>266
あっちではASCIIが標準っぽいから、UTF使わん時は
とりあえずASCIIにしとけやって感じだったんでしょうなぁ。
何にしても、ファイルオープンはOS依存部分なんで、
現状、下手にファイル名はエンコーディング変換すべきじゃないかなと。

それにしても、どの言語使ってても文字コード関係の問題は
プログラマ苦しめてくれるわ _| ̄|○

>>267
sqlite c:\hoge.db で create table したら、 hoge.db が出来てる。
あとはSQL92本とSQLite公式ドキュメント読んで気合で。

269 :NAME IS NULL:04/12/24 14:52:32 ID:j+9u7lDN
>>268
さんくす。
ただ、書き忘れてたことがあって。
よー考えたらPHPにSQLiteのモジュール組み込んだだけなような。

非常に感謝した。


270 :NAME IS NULL:04/12/27 12:27:32 ID:UKRyD7qw
ADO.NET Data Provider for SQLite (Version 0.20)
日本語処理デバッグの追加メモ

= 問題 =
デフォルトのオプション設定 Version=2;UTF8Encoding=False で
日本語データを処理できない。
つまり、SQLite2 が Shift-JIS コードの日本語データを処理できない。
(SQLite.exe で入力した日本語データを読めないぞ、とか、
以前から使っていたデータベースを読めないぞ、となる。)

= 解決方法 =
sqlite2.cs 55, 457, 461行目と Util.cs 178行目の
Encoding.ASCII を
Encoding.Default に変更する。
Encoding.GetEncoding("Shift-JIS") として文字コードを明示してもよい。
これで SQLite2 で Shift-JIS を扱えるようになる。

注) Version 0.18 までは、この問題は起こらない。
SQLite2 で UTF8 を使うときには、もともと問題でない。
SQLite3 は UTF8 がデフォルトで、UTF8Encoding=False は無視されるので、
SQLite3 にも無関係。

271 :NAME IS NULL:04/12/27 13:25:39 ID:???
Defaultはともかく、Shift-JIS決め撃ちはよろしくないな。
Winのコードは、正確にはShift-JISじゃないし。
まぁ、何にしてもUTF-8使おうぜ。

272 :270:04/12/27 14:10:38 ID:bP0BeZGo
確かに。これからは UTF-8 を使うのが推奨。

273 :NAME IS NULL:04/12/30 17:41:45 ID:FzyFXvYT
C# で SQLite 使うに
SQLite Query Analyzer (SQLiteQA) は実用にもなるけど、
ソースも参考になりますです。
http://www.monkeyshinez.net/SQLiteQA/

274 :NAME IS NULL:04/12/30 22:09:30 ID:???
unicodeなんて糞
今までどおりeucかsjisでええわ

275 :NAME IS NULL:04/12/31 19:03:34 ID:???
> までどおりeucかsjisでええわ
m9(^Д^)プギャー
こういう奴が、MS932と純Shift-JISの区別もつかずに
DBに文字放りこんでるんだろうな。

276 :NAME IS NULL:05/01/01 00:20:55 ID:???
UTF8 って MS932 の文字も含まれているの?

277 :NAME IS NULL:05/01/01 04:48:25 ID:???
>>275
しつれいだがどういう繋がりが?

278 :NAME IS NULL:05/01/01 10:34:56 ID:???
>>277
文字コードの話が出ると必ずこういうのが沸いてくるのはもう仕方ない。
普通にスルーしとけ。

279 :NAME IS NULL:05/01/01 11:28:51 ID:???
Perl DBD::SQlite で使ってみてるんですが、LIKE 構文でちょっとはまってます。

WHERE string LIKE '%キーワード%' みたいにして文字列中間一致検索してるんですが、
キーワードに % や _ を指定してしまうと全てにマッチしてしまうので困ってます。

じゃあ % や _ はエスケープして LIKE '%\%%' みたいにしたらどうかと思ったらダメだし、
LIKE '%|%%' ESCAPE '|' みたいにエスケープ文字指定しようとすると Syntax Error になるようです。

何か良い解決策はないでしょうか?

280 :NAME IS NULL:05/01/01 14:12:43 ID:???
>>276
含んでいると言われれば、含んでいると思う。
ただ、重複符号やWAVE DASH変換とかの問題もあるけど。
IANA の登録名がWindows-31Jなので、MS932よりこちらの名称の方が妥当かも。
窓べったりの開発ならShift_JIS、クロス開発なら、UTF-8が安全牌かな・・・

個人的に、SQLiteのウリは可搬性だと思うので、UTF-8使うのがよさげだと思った。


281 :NAME IS NULL:05/01/01 20:47:45 ID:???
>279
phpでは\エスケープで動いたが。なぜ動かなかったスクリプトを書かない?

$_ = '%_\\';
print "$_ => ";
$_ =~ s/([%_\\])/\\\1/sg;
$_ = "%$_%";
print "$_\n";

282 :NAME IS NULL:05/01/02 10:39:43 ID:???
これからSQL勉強するのにお勧めの本ってある?

283 :279:05/01/03 04:28:16 ID:???
>>281
思い通りに動いてくれないスクリプトの該当部分晒します。
($keyword に検索したい文字列が入っています)

$keyword =~ s/([%_\\])/\\$1/g;
my $query = "SELECT * FROM files WHERE namer LIKE ' . $dbh->quote("%$keyword%");
my $sth = $dbh->prepare($query);
$sth->execute();

1行目がないと、% や _ をキーワードに入れた時は
問答無用で全件にマッチしてしまいます。
1行目をつけることによって % や _ はエスケープされ、
適切な物のみがマッチすることが期待されますが、
実際には1件もマッチしません。

284 :NAME IS NULL:05/01/04 21:46:21 ID:???
> "SELECT * FROM files WHERE namer LIKE '
これはOKなのか?
入力ミスかどうか知らんけど。


285 :283:05/01/06 01:24:06 ID:???
>>284
すいません、そこは貼り付ける時の編集ミスです

286 :NAME IS NULL:05/01/06 21:28:40 ID:hqOqZvbU
APACHE2 + PHP5 + PDO + SQLite3 使っていますが何か?

287 :名無しさん@Linuxザウルス:05/01/06 22:31:57 ID:???
>283
sqlite単体でもそういう結果返ってくるね
PHPはどう処理してるんだろうと思ってソース覗いてみたけど
俺にはさっぱりだったよw

288 :NAME IS NULL:05/01/07 13:07:13 ID:???
何か、と言われても
そっれがどうした僕ドラえもんって感じだ。

289 :NAME IS NULL:05/01/07 22:23:15 ID:???
>>286
どこで、が重要。ローカルなら普通すぎ。

290 :NAME IS NULL:05/01/09 15:37:51 ID:???
PHPでSQLite使いたいのですが、
mbstring.internal_encodingがEUC-JPの状態で
UTF-8しか対応していないという噂のSQLiteに日本語をそのままつっこんで
SELECT * FROM table WHERE hoge LIKE '%あ%' とかもふつうに使えるようなのですが、

問題が起こるケースはどんな時なのでしょうか?


291 :NAME IS NULL:05/01/09 18:54:09 ID:???
大文字小文字

292 :290:05/01/10 13:33:03 ID:???
>291さま
私の質問への回答でしょうか。だとしたらありがとうございます。
しかし、今のところ問題がなさそうに見えます。

INSERT INTO table (comment) VALUES ('ごっちゃまぜゴッチャマゼ鬱');
の後に
SELECT * FROM table WHERE comment LIKE '%チャ%';
SELECT * FROM table WHERE comment LIKE '%ちゃ%';
でもちゃんと結果を返してくれます(まぁ実際にはハンカクカナなんぞ入れませんが)。
やりたいことの範囲内で問題がなければいいのかなとも思うのですが。
やりたいこと:掲示板スクリプト(コメント欄で日本語LIKE検索を使いたい)



293 :NAME IS NULL:05/01/11 16:59:22 ID:???
>>292
う〜む。そーす見ても分からんな。
LIKEじゃなくGLOBを使って、*/?を[*]/[?]にしてみたらどうよ?
いっそ「検索にワイルドカードが使えます」とアナウンスするほうが楽かもしれないが。

294 :290:05/01/12 00:28:51 ID:???
>293さま
んとですね、私の書き方がまずかったです。
(1) いろんな情報を見た結果、SQLiteで日本語を扱うには
UTF-8でないといけないのかな、と判断した。
(2) しかしながら私の使っているPHPはmbstring.internal_encodingがEUC_JP。
ということはEUCJPでSQL作成→UTF8に文字コード変換→クエリ実行→
結果取得→マルチバイトのカラムはそれぞれEUCJPに文字コード変換、
とやらないと *何か* 問題が発生するだろうなぁ、と考えた。
(3) まぁそういうラッパー作るのが正当なのかな、と考えつつ
ものは試し+ものぐさでEUCJPのままマルチバイト入れても、
ふつうに使える(ように見える)。

という前提があって、さて、本当に問題は起こるのか?というところを知りたいのです。
一見問題なさそうで本格運用して、あとで問題発生が怖いのですよ。
こんなケースでこんな不具合があるよ、
という経験をお持ちの方、いらっしゃいませんかねぇ?

ちなみに当方ロリ○ップでコソーリSQLite使用中

295 :NAME IS NULL:05/01/12 11:18:21 ID:???
>>294
ああ、そういうことならsubstring()とかlength()等文字列操作関数以外では特に関係無いから。


296 :NAME IS NULL:05/01/12 13:51:54 ID:???
>>279
私も where xxx like '%あ_い%'
で、検索ができませんでした。
sqlite_escape_string -- クエリパラメータ用に文字列をエスケープする
これ、やった結果は、どのような文字列になるんですかね。
php じゃ、なくて、python でやってるんで、
sqlite_escape_string のようなものがあるか、今調べようとしているんですが、

where xxx like '%あ\_い%'
と \ を入れてもだめだし、
取り合えず、 like 使うときは、 _ があったら、 % にでも
して、やり過ごそうかと思ってますが。
どう?

297 :296:05/01/12 14:38:21 ID:???
sqlite3.0 で SJIS のデータでやってますが。
like は、 エスケープが使えないのかな。
http://www.mail-archive.com/sqlite-users@sqlite.org/msg04862.html
http://www.mail-archive.com/sqlite-users@sqlite.org/msg04863.html
に、それらしい?ことが書いてありましたが、
で、
仕方が無いので、 '_' or '%' があるときは、
like じゃなくて、 glob で * にするとか
like のままで、 _ を % にでも書き換えようかと
思いました。



298 :NAME IS NULL:05/01/12 16:54:43 ID:???
pdo_sqliteが見当たらないどこいったーー


299 :NAME IS NULL:05/01/19 22:04:11 ID:???
いつのまにか SQLite3/Ruby ができてた。

300 :NAME IS NULL:05/01/22 22:08:03 ID:???
LIKE ... ESCAPE 対応sage

301 :NAME IS NULL:05/01/22 22:43:21 ID:???
alter table 出来るんだね。

302 :NAME IS NULL:05/01/24 08:54:59 ID:???
ALTER TABLE ... RENAME TABLE ...
テーブル名変更のみ対応の限定版みたいだけどね。少し楽になるかな。

303 :NAME IS NULL:05/01/31 11:03:59 ID:3JFZomnK
3.10(alpha) age

304 :NAME IS NULL:05/02/02 07:46:54 ID:mdzMwrr7
Sqliteが使える鯖あったら、教えてチョ。


305 :NAME IS NULL:05/02/02 10:41:49 ID:???
XREAの一部のサーバーでPHP5が利用可能になったよ。
どのサーバーで使えるかは事前に確認しろよ。

306 :NAME IS NULL:05/02/02 14:10:53 ID:???
3.1.1 (beta)

307 :NAME IS NULL:05/02/04 07:30:10 ID:???
>>305
あんがと。

308 :NAME IS NULL:05/02/13 02:33:51 ID:bTxKUDlt
どうがんばっても3.1.1betaがダウンロードできない・・・

309 :NAME IS NULL:05/02/16 14:04:19 ID:???
3.1.2を落とせばいいじゃない

310 :NAME IS NULL:05/02/16 14:25:22 ID:???
stableデタ━━━(゚∀゚)━━━!!!

311 :NAME IS NULL:05/03/01 17:13:17 ID:+RdvxZ60
PHPネタですが、、

PEAR::DBが1.7.0からsqliteドライバにtableinfoメソッドが追加されたので
PEAR::DB::DataObjectでSQLiteが利用できるようになりました。
createTables.phpによるsqliteのDB解析はいくつかの問題点があったのですが
それらも解消されているようです。(DSNからDB名を取得してschemeのiniファイル
を作る場合にパスもDB名と解釈してしまいエラーがでる問題が解消されている)

312 :NAME IS NULL:05/03/14 11:06:00 ID:zJnP9H2H
3.1.5age

93 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)