[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/16 17:55 / Filesize : 176 KB / Number-of Response : 928
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

SQL文をハードコーディングするやつはとっとと氏ね



1 名前:仕様書無しさん [2007/02/07(水) 01:32:56 ]
って思う

588 名前:仕様書無しさん [2007/12/23(日) 00:55:00 ]
DBへの処理はDB側で行うのかプログラムに書いちゃうかはプロジェクトによって分かれるね。
今のプロジェクトはDBへの処理は必ずストアドを使うように言われてる。
そもそもプログラムを実行するユーザーにはストアドのGRANT権限しか付与してくんない。
まあどっちでも良いや。

589 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:58:24 ]
DB側に処理もって行ったら不可分散しにくいじゃん

590 名前:葉猫 ◆Jz.SaKuRaM mailto:sage [2007/12/23(日) 09:48:57 ]
一時テーブルを使えないとスピードが遅くなるからDB側でちょ (`・ω・´) シャキーン

591 名前:仕様書無しさん mailto:sage [2007/12/23(日) 11:10:09 ]
お前マジキメェ
さっさと失せろ

592 名前:仕様書無しさん mailto:sage [2007/12/23(日) 17:58:23 ]
どう書くのが推奨なの?
SQL生成用の関数作ってパラメータ放り込むぐらいしか考えつかん


593 名前:仕様書無しさん mailto:sage [2007/12/23(日) 18:07:02 ]
ORマッパ

594 名前:仕様書無しさん mailto:sage [2007/12/23(日) 22:04:21 ]
今時一次テーブルとかスキル無いコテってなんなの?

595 名前:仕様書無しさん mailto:sage [2007/12/23(日) 22:49:36 ]
以前も自らのアホっぷりを晒したレスを論破されて逃走
挙句の果てに火病って糞スレ立てるほどのアホの子ですから

596 名前:仕様書無しさん [2007/12/25(火) 00:23:35 ]
なんでも*つければ
良いってもんじゃねーぞ。



597 名前:仕様書無しさん mailto:sage [2007/12/25(火) 02:00:35 ]
SQLは全部外だししてたなぁ
↓こんな風にして値を置換してたわ

<sql>
<command>
SELECT * FROM TBL WHERE id = <val1> AND name = <val2>
</command>
<parameters>
<parameter name="val1" value="ID" comment="ID用" />
<parameter name="val2" value="NAME" comment="名前" />
</parameters>
</sql>

parameterタグのnameはcommandタグのSQL先で、valueはプログラムにある変数コードだったな。
SQLはハードコーディングはコンパイルして再起動してその画面行くのが面倒だし普通にやらんかったわ

598 名前:仕様書無しさん mailto:sage [2007/12/25(火) 02:20:05 ]
GRANT権限ってなんだ

599 名前:仕様書無しさん mailto:sage [2007/12/25(火) 06:22:04 ]
>>598
GRANT文を実行できる権限じゃね?


600 名前:仕様書無しさん mailto:sage [2007/12/25(火) 11:01:49 ]
>>597
名前で検索って、それじゃIDの意味ねーよw
↑どうでもいいことを言ってみる。

601 名前:仕様書無しさん mailto:sage [2007/12/25(火) 23:06:57 ]
>>597
WHEREを画面の入力によって組み立てたりすると
途端に破綻するんだろ?

602 名前:仕様書無しさん mailto:sage [2007/12/26(水) 00:48:48 ]
>>599
中間管理職か...

603 名前:仕様書無しさん mailto:sage [2007/12/26(水) 00:58:39 ]
>>601

<sql>
<command>
SELECT * FROM TBL WHERE (id = <val1> or <val1> = '') AND (name = <val2> or <val2> = '')
</command>
<parameters>
<parameter name="val1" value="ID" comment="ID用" />
<parameter name="val2" value="NAME" comment="名前" />
</parameters>
</sql>

みたいな涙ぐましい工夫するんじゃないかな

三値論理的には空欄の場合はnullにして
SELECT * FROM TBL WHERE (id = <val1> AND name = <val2>) IS NOT FALSE
のほーがスマートかも知れんがOracleが対応してなかった希瓦斯

604 名前:仕様書無しさん mailto:sage [2007/12/26(水) 07:04:29 ]
インジェクションされまくるじゃないか、とかは別にして、
結局ハードコーディングした方がいいじゃん、つ流れになりそうな話だなぁ

605 名前:仕様書無しさん mailto:sage [2007/12/26(水) 07:21:19 ]
バカどもがどうしようと構わんが、マ板の質落ちたねぇ・・・

606 名前:仕様書無しさん [2007/12/26(水) 21:49:21 ]
>>605
どうしたら上質だんだよ。



607 名前:仕様書無しさん mailto:sage [2007/12/26(水) 23:16:54 ]
んだんだ

608 名前:仕様書無しさん mailto:sage [2007/12/26(水) 23:35:51 ]
>>606
やっぱブラック、いろんな意味で。


609 名前:仕様書無しさん mailto:sage [2007/12/27(木) 00:15:23 ]
>>603
SQL実行する前に値チェックをプログラムでやればいいだろ

610 名前:仕様書無しさん [2007/12/27(木) 18:18:24 ]
INSERTする前には必ずSELECTして重複チェックしてください。

611 名前:仕様書無しさん mailto:sage [2007/12/27(木) 18:22:31 ]
>>610
それはあまりに間抜けな仕様。

論理的な重複排除はPKかUNIQUE INDEXの一意制約違反で
INSERT時のSQL実行エラーを戻してもらえればいい。
あとはアプリケーションでエラー処理をきちんと実装する。


612 名前:仕様書無しさん mailto:sage [2007/12/27(木) 19:18:27 ]
>>610
SELECTとINSERTの間に他のセッションからINSERTされちゃうことってないの?

613 名前:仕様書無しさん mailto:sage [2007/12/27(木) 19:40:31 ]
>>611
俺らがSELECTされない間に、あいつはINSERTされてるんだよ、畜生。

614 名前:仕様書無しさん mailto:sage [2007/12/27(木) 21:00:42 ]
>>613
俺なんかSELECTされる事が無いまま、そっけなくDELETEされるんだぜ。

615 名前:仕様書無しさん mailto:sage [2007/12/28(金) 00:36:29 ]
>>614
お前は一度でもINSERTしたのか!

616 名前:仕様書無しさん mailto:sage [2007/12/28(金) 10:25:30 ]
ハードコーディングってなんぞ?
JDBCは組込みSQLはハードコーディングに入ってんのか?



617 名前:仕様書無しさん mailto:sage [2007/12/28(金) 12:01:41 ]
SQLを外に出してる奴は、他の言語内言語である正規表現とかも外に出してるのか?

618 名前:仕様書無しさん [2007/12/28(金) 12:03:43 ]
spring framework位使いこなしなよ。おじいさん^^

619 名前:仕様書無しさん mailto:sage [2007/12/28(金) 12:07:49 ]
中出しはらめぇ

620 名前:仕様書無しさん mailto:sage [2007/12/29(土) 06:26:03 ]
springとSQLのハードコーディングは、何の関係も無いと思うが・・・

621 名前:仕様書無しさん [2007/12/29(土) 17:04:29 ]
ハードコーディング自体は悪くないが、
複数のメソッドで部分部分SQL文字列組み立てるのは勘弁してくれ。

622 名前:仕様書無しさん [2007/12/30(日) 12:55:40 ]
昔バカスイーツSE女がいて
ソースが汚いとすぐハードコーディングハードコーディング言ってうるさかった

623 名前:仕様書無しさん mailto:sage [2007/12/30(日) 13:39:39 ]
>>617
SQLと正規表現だと別もんだと思うんだが・・・
正規表現エンジン変えられるようにしてたりしたら外に出すなぁ

624 名前:仕様書無しさん mailto:sage [2007/12/30(日) 20:34:26 ]
ハードコーディング肯定してる奴らってIDE使ってないんじゃないかって気はする


625 名前:仕様書無しさん mailto:sage [2007/12/30(日) 21:55:06 ]
何言ってんだ?

626 名前:仕様書無しさん [2007/12/31(月) 06:18:06 ]
>>610くらいからの流れにクソワロタ



627 名前:仕様書無しさん mailto:sage [2007/12/31(月) 11:01:55 ]
>>623
RDBMS変わりうること前提にした外出しなの?

変わることなんかそうそう無いと思うんだが

628 名前:仕様書無しさん mailto:sage [2007/12/31(月) 12:25:29 ]
ハードコーディング=静的SQL
それ以外=動的SQL
ってこと?

なら静的に書いたほうがオーバーヘッドがない分性能はいいよ

629 名前:仕様書無しさん mailto:sage [2007/12/31(月) 12:26:48 ]
>>628
静的・動的ってどういう意味で使ってる?

俺はORMを使うかどうかという意味だと思っていたのだが。


630 名前:仕様書無しさん mailto:sage [2007/12/31(月) 12:31:14 ]
どういう意味???
静的=コンパイラにSQLのロジックを展開させてLMでは最終的なDBアクセスのロジックは固定
動的=SQLが内部的に変わるのでSQL翻訳後にDBアクセスするのでの余計なオーバーヘッドがかかる

こんな感じ?


631 名前:仕様書無しさん mailto:sage [2007/12/31(月) 12:36:48 ]

ここマ板か
失礼、DB板と勘違いした


632 名前:仕様書無しさん mailto:sage [2007/12/31(月) 13:20:31 ]
O/Rマッパは汎用的なのは良いが
オプティマイザの実行計画が
実は大変なことになってることが多いのが悲しいな。

633 名前:仕様書無しさん mailto:sage [2007/12/31(月) 13:33:38 ]
>>627
正規表現の場合の話がしたいの?SQLの場合の話がしたいの?
SQLと正規表現は別もんって書いてあるよね?

634 名前:仕様書無しさん mailto:sage [2007/12/31(月) 13:35:45 ]
>>632
裏で色々あったんだろうがDBMagazineのTopLinkは奇麗だったな・・・

635 名前:仕様書無しさん mailto:sage [2008/01/01(火) 20:57:02 ]
>>630
SQLの場合はこんな感じかな。DB2限定だが。
静的:実行計画を事前に取得しておく。
動的:実行時に実行計画を取得する。

ORACLEって静的バインド出来ないよね?


636 名前:仕様書無しさん [2008/01/04(金) 16:45:58 ]
1 が言いたいのはたぶん、
同一のテーブルを参照するSQLを
いたるところに書くことに辟易
してるってことを言いたいんだと思う



637 名前:仕様書無しさん mailto:sage [2008/01/04(金) 21:56:46 ]
それは、ハードコーディングだろうが、
外部ファイルに書こうが一緒だ。

638 名前:仕様書無しさん mailto:sage [2008/01/04(金) 22:25:27 ]
レスも空気も読まずにageレスか・・・さすが冬

639 名前:仕様書無しさん [2008/01/05(土) 01:24:58 ]
1が言いたいことはたぶん
プログラム内でSQL文を組み立てて発行することを言ってるんだと思う。
前にVBプログラマが作ったソースを見たら
sql = "SELECT * FROM テーブル"
conn.exec(sql)
みたいなコーディングだったんだけど、こういうのがハードコーディング?
DBにプロシージャとかを作成してアプリ側はそれを呼ぶだけにして欲しいってことじゃないの?

自分は小さい規模(ユーザー数1000人前後)のシステムしか作ったことがないので
普通にDBにプロシージャを作って、C#でDBに接続してプロシージャを実行とかやってる。
上のレスを見たら分散処理のためにハードコーディングするとかあったけど
よく意味がわからなかった(^^;
ヤフーとか2chのようにもの凄い大量のアクセスがあるシステムでは
分散処理とか考えてコーディングしないとヤバイのかな?
もっと勉強しなきゃだな。
うちはWebサーバ1台とDBサーバ1台だけでやってて特に問題無い程度のアクセス数だけど
複数台のサーバで処理を分散とかの勉強もしなきゃなぁ。

640 名前:仕様書無しさん mailto:sage [2008/01/05(土) 02:01:43 ]
>>639
半年ROMれ

641 名前:仕様書無しさん mailto:sage [2008/01/05(土) 02:25:38 ]
>639
あー半年と言わず三年ROMれ

642 名前:仕様書無しさん mailto:sage [2008/01/06(日) 10:32:28 ]
ここの住人って常駐派遣が多そうだな。

643 名前:仕様書無しさん mailto:sage [2008/01/06(日) 11:04:37 ]
客先常駐の請負仕事なだけで派遣じゃないよw

644 名前:仕様書無しさん mailto:sage [2008/01/06(日) 18:46:56 ]
偽装派遣のにおいがするんだが・・・

645 名前:仕様書無しさん mailto:sage [2008/01/06(日) 18:49:37 ]
てゆうかマジで客先常駐なんてありえないよね。
ぶっちゃけ惨めじゃん。
自分の会社じゃないところに行ってさ。
うちにもちっさい会社のエンジニアが沢山常駐してるけどかわいそうだよ。
会社によるだろうけど派遣社員にはネットやメールを使わせないとか
そういうルールもあるし。

646 名前:仕様書無しさん mailto:sage [2008/01/06(日) 23:11:03 ]
常駐させてるのも、そういうルールを作ったのも
お前の会社なんだろ。



647 名前:仕様書無しさん mailto:sage [2008/01/07(月) 22:04:27 ]
思い付きだけで書かれたものを残されるとツライと思う。
でも、OJTだけで教育しようとしてるウチじゃあ無くならないんだろうな。

648 名前:仕様書無しさん mailto:sage [2008/01/08(火) 10:58:26 ]
>>647
詳細設計完了後に思いつきで
仕様変更を連絡して来なきゃ、
そのケースはかなり減ると思うwww

649 名前:仕様書無しさん [2008/01/08(火) 22:05:35 ]
先輩方!お手本ソースを教えて教えて!

650 名前:仕様書無しさん mailto:sage [2008/01/13(日) 22:06:25 ]
M + ijime = Mijime = みじめ = 惨め

いじめられても笑顔で居られる客先常駐って惨めだよね

651 名前:仕様書無しさん mailto:sage [2008/02/06(水) 01:24:00 ]
まだあったのなー。
最近、自宅で趣味でJavaのWEBシステム構築やってんだけど、
ハードコーディングが楽だわ。

SQLインジェクションはバインド変数で解決、
不要なカラムは取得せずSQLもすっきり、I/Oもすっきり。

なんで>>1はハードコーディング嫌ってんの?作業振りしやすいから?
プログラマにDB周りをある程度把握させとかないと問題あったとき、危険だと思うけど。
どっちにしろO/Rマッピングは1から10まで全部一人でやっちゃうプログラマにはあんま美味しくないよ

652 名前:仕様書無しさん mailto:sage [2008/02/06(水) 14:56:30 ]
>>651
あとO/Rマッパはチューニングしにくい罠

653 名前:仕様書無しさん [2008/02/24(日) 17:40:04 ]
ハードコーディングってそもそも何?

654 名前:仕様書無しさん mailto:sage [2008/02/24(日) 18:11:09 ]
俺はiBATISくらいの薄い方が好きだ

655 名前:仕様書無しさん [2008/02/24(日) 19:15:37 ]
SpringJDBCがよい

656 名前:仕様書無しさん [2008/02/24(日) 19:23:02 ]
bbs.cgiboy.com/Guestbook/BBS/07232290/
荒らしならここをつぶすのがいい

へいさにおいこめくずども



657 名前:仕様書無しさん mailto:sage [2008/03/02(日) 22:49:26 ]
SQLをDBに持つとか別テキストに持つだとか構造をXMLにしてもっておくだとか
いろいろなプロジェクトがあったが、結局はSQLを直すときはソースも直す場合が多いよね。
そうなると分けるとよけい保守性が悪くなるよね。

658 名前:仕様書無しさん mailto:sage [2008/03/03(月) 00:31:54 ]
修正の規模による

659 名前:仕様書無しさん [2008/03/03(月) 22:31:21 ]
項目A(3バイト)、項目B(6バイト)

(更新前)
AAA,BBBCCC
AAA,BBXCCC
AAA,BBPCCC

(更新後) ← このようにしたいです。
AAA,BBZCCC
AAA,BBZCCC
AAA,BBZCCC

目的は、項目Bの頭3バイトだけを”BB*”で条件に指定して、
項目Bの頭3バイトを全て”BBZ”に更新したい場合どうすればよいのでしょうか?
項目Bの後3バイトの”CCC”はそのまま残さなくてはいけないため、
どのようなSQL文にすれば良いのかわかりません。

どうしても後3バイトを生かしたままの更新なので。。。。困ってしまします。

お知恵をお貸しください。

660 名前:仕様書無しさん mailto:sage [2008/03/03(月) 22:41:36 ]
>>659
concat(concat(substr(B,1,2),'z'),substr(B,4,3))でupdateしたらどうか?

661 名前:仕様書無しさん [2008/03/03(月) 22:50:13 ]
>>660
本当にありがとうございます!!
さっそく明日実行してみます。!!
「現場で使えるSQL」って本読んでもうまくSQL文思いつかなくて。。。
本当にありがとうございます!!

662 名前:仕様書無しさん mailto:sage [2008/03/03(月) 23:05:55 ]
設計が悪いようにしか思えん。


663 名前:仕様書無しさん mailto:sage [2008/03/04(火) 00:38:36 ]
これ酷いな

664 名前:仕様書無しさん mailto:sage [2008/03/04(火) 13:13:52 ]
ハードコーディング最強

665 名前:仕様書無しさん mailto:sage [2008/03/04(火) 17:31:29 ]
S2DAOでいいや

666 名前:仕様書無しさん mailto:sage [2008/03/04(火) 22:17:23 ]
>>659 コボラーのにおいがする



667 名前:仕様書無しさん [2008/03/05(水) 00:34:15 ]
ストアドは使わないの?
コンパイル時間がかからないから初回がやたら遅いSQLにいいじゃん。

668 名前:仕様書無しさん mailto:sage [2008/03/05(水) 01:17:28 ]
DBにSQL文いれときゃいいじゃん

669 名前:仕様書無しさん mailto:sage [2008/03/06(木) 09:35:17 ]
>>668
それを取得するSQLはどうするんだ?

670 名前:仕様書無しさん mailto:sage [2008/03/07(金) 00:50:45 ]
Dim SQL As String
SQL=DLookup("SQL","M_SQL管理テーブル","id=xxx")


671 名前:仕様書無しさん mailto:sage [2008/03/07(金) 02:30:25 ]
Accessはポイだポイ。

672 名前:仕様書無しさん mailto:sage [2008/03/11(火) 06:32:38 ]
>>670
Aceess かどうかはともかく、SQL 文を id(多分 数値型のつもりでしょ) で管理するってのは、
関数やら手続きを連番で管理するのと同じにおいがする。
id='xxxマスタ取得' とか id='xxx一覧取得' とかなら、数値管理よりはましかな。



673 名前:仕様書無しさん [2008/03/14(金) 01:36:48 ]
>>672
これやった事ある。
SQLを修正するときは探すのも面倒なので新規にテーブルに
放り込んでたw
ソース側はid変えるだけ。
思ったよりも混乱は生じなかったよ。
DBに2回アクセスするのが欠点だけどw




674 名前:仕様書無しさん mailto:sage [2008/03/14(金) 02:29:54 ]
SQLを別の場所に置いたとして、SQL修正後のテストのために
どのプログラムから、そのSQLが使われてるかとか常に管理してんの?
それとも複数のプログラムからはSQLを共有しない?

675 名前:仕様書無しさん [2008/03/14(金) 02:44:42 ]
>>674
>それとも複数のプログラムからはSQLを共有しない?
その通りまったく同じSQLがたくさんはいっている。
ソース内で同じIDのSQLを呼び出さないルール
ソース側との整合性だけとれてればいいので管理しない。
テスト時に帰ってきたSQLが正しいかだけチェックしてる。
ぶっちゃけると中国人プログラマが勝手にこのルールに
してしまったので皆つきあわされたww


676 名前:仕様書無しさん mailto:sage [2008/03/14(金) 07:59:11 ]
SQLを動的に作る自作API使ってる。1500行。
メリットはどんなSQL DBにも対応可能。
汎用性/柔軟性が高い。開発効率が良い。

デメリットはストアドとかが使えない。



677 名前:仕様書無しさん mailto:sage [2008/03/14(金) 20:24:52 ]
それならS2JDBCでも使えよ。
まぁ、Javaじゃないかもしれんが

678 名前:仕様書無しさん [2008/03/14(金) 22:28:20 ]
SQLを外出しにして管理しても再利用できる汎用的なSQLは
せいぜい全体の2・3割程度で、ほとんどは1箇所でしか使われない。
単純で汎用的なSQLについてはOR-MAPした方が便利だが、
帳票出力、データ集計、条件が複雑に変化するな検索など
ビジネスロジックそのものと言えるSQLはオンコーディングか、
ストアドにしてしまった方がシンプルかと…


679 名前:仕様書無しさん [2008/03/14(金) 23:27:03 ]
おれもストアドだな

680 名前:仕様書無しさん mailto:sage [2008/03/15(土) 00:17:05 ]
ストアド使い出すと、増えすぎて見通しが悪くなるから好かん

681 名前:仕様書無しさん mailto:sage [2008/03/15(土) 00:40:08 ]
ストアドはうざいから俺も好かん

682 名前:仕様書無しさん mailto:sage [2008/03/15(土) 01:03:25 ]
異様に処理時間のかかるアホみたいなのを平気で組むヤツが居るんよな

683 名前:仕様書無しさん mailto:sage [2008/03/15(土) 01:08:04 ]
Oracleマニアみたいな人が作って残していった
バッチ処理で1万行のプロシージャと闘ったときは死ぬかと思った。
単純になるなら歓迎だけど、意地でもストアドみたいなポリシーはやめて欲しい。

684 名前:仕様書無しさん [2008/03/15(土) 12:26:23 ]
>>683
それはストアドにしたから複雑になったんじゃなくて、
SQL一発でできることを無駄にカーソルで処理するから複雑になってるのでは?

685 名前:仕様書無しさん mailto:sage [2008/03/15(土) 12:42:31 ]
>>683
1プロシージャに1万行なんて、そいつがキチガイなだけだろ


686 名前:仕様書無しさん mailto:sage [2008/03/15(土) 21:56:57 ]
「カーソル」が使われているストアドは、COBOLからの書き換え以外認めない。




687 名前:仕様書無しさん mailto:sage [2008/03/16(日) 23:46:20 ]
>686
それはまた極端なw

688 名前:仕様書無しさん [2008/03/22(土) 08:18:00 ]
人間中庸が肝心だ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef