サイト検索
検索
サイトメニュー
Menu
RTB SoftLab ラテベ ソフトラボ (ラテベラボ)
私の知っているソフトの操作を解りやすく、解説していきます。
サイト検索
検索
サイトメニュー
Menu

投稿日:2021年3月4日

更新日:2021年3月3日

DBの種類によって、SQL文って、変わるので困るよね~www

Javaの開発で、テッキリMYSQLを使うと思っていましたが、今回の開発は、MSのSQLサーバになるそうです^^;

(頂いたサンプルは、MYSQLだったので、テッキリそうだと思っていました)

問題は、SQLクラス(自作SQL支援クラス)をMYSQL用に作ってしまったことです(笑)

そのクラスにて、Limitを使っているということで、Sqlサーバではエラーになってしまいます^^;

  • なるべく汎用的なSQLを使用してクラスを作成した
  • でも、Limitは見逃してしまったOzu~www

自作クラスをSQLSERVER用に書き換えてもいいのですが・・・。

  • それでは、面白くない!
  • この自作クラスは、私の資産になる!
  • この自作クラスを汎用的に、色々なDBに接続可能にすべきである。
  • どうしても、固有のSQLを使用したいのであれば、SQL文を直にPGに書くことで回避可能である。

ということで、このクラスの機能アップをすることに決めました♪

LIMITをSQL Serverで使うには!

基本的に、ないものはない!
ということで、LIMITを使わない方法がベターと感じます!
こんな感じかなと思います!

  • Limitは、BETWEEN ss AND eeに変える
    • そうすることで、クラスのパタメータはそのままでOKである。
    • 又、パラメータ自体は、WEBが基本なので、SQLサーバーはほぼない。
    • よって、パラメータ関数は、LIMITのままでOKである。
  • BETWEENを使うので、Row№が必要である。
  • 後は、やりながら調整かな!(笑)

ということで、予定はバッチリ!(たぶん)

後は、実行するのみ!

予定はあくまで予定であって、実際に行うと・・・^^;

さて、まずは、MySql(実際は、MariaDB)専用のクラスになっているので、Enumで、分岐するようにしました。

分岐処理で、SqlServer以外は、Limtで行うようにして、テスト完了!

次に、SqlServerを見越して、行№を追加

 Select
@rownum:=@rownum+1 as RowNo
, ttt.*
 From 
 (SELECT @rownum:=0) AS ROW_TBL,
ttt			As	ttt;

@rownum:=@rownum+1 as RowNo

(SELECT @rownum:=0) AS ROW_TBL,

SqlServer以外は、出力するに変更!

テストも問題なし!!

さて、SQLSERVERに接続を切り替えます。

Sqlサーバの環境作成!

あれ?構成マネージャーが~www^^;

WMIプロバイダーに接続出来ません。
WMIプロバイダーに接続出来ません。

これは、経験した覚えが!!(覚えていました♪)

  • まずは、ここに行って
    • C:\Program Files (x86)\Microsoft SQL Server\120\Shared
  • コマンドで
    • mofcomp sqlmgmproviderxpsp2up.mof
  • これで、OK!!

SqlServerの環境が出来たので!!

接続~♪

うまくいかないwww^^;(まぁこんなもんですねwww^^;)

原因検索としますか!

  • ファイヤーフォルは?(問題なし!)
  • 接続文字列は?(問題なし!)
  • なんだwww^^;

結論は、構成マネージャーで、Tcp-Ipのポートを変更した後、SQLサーバの再起動を忘れていました。oz~www^^;

JAVAからの接続も出来たので、SQLクラスを変更!

えっ!

行№から、between aaa 1 to 10で、抜出したいのに、まず、行№は、項目を指定しないといけないwww^^;

サブクエリーを使って、行いたいが、Orderが出来ないwww^^;

何か方法があるのか?

駄目ですね~^^;Google先生お願いします♪

見つけました。

Offsetかぁ~!!

使ったことがないなぁ~www^^;

でも、これって、読み飛ばしなので、速度に影響がありそうなぁ~www^^;

悩み中~。

  • Limitは、いつどのように使う?
    • 基本的には、SQLサーバのTOPと一緒の使い方しかしない。
    • ある点から10件とかは、ある点の条件(Where句)で補える!
  • ということは!下記が基本になると考えます。
    • limitの変わりは、Top句とする。
      • 但し、開始位置が0の場合とする。
      • 開始位置が0でない場合は、仕方ないので、Offsetにて対応する。

方針が決定したら、PGを作るのみ!!

テストも完了して、これでOKかな♪

残っている懸案

分類懸案結論完了
javathrows ServletException, IOException 
これからの懸案一覧

今回のまとめ

予定では、BETWEEN ss AND eeを使用する予定でしたが、
結局、使っていませんね(笑)

  • MSのSQLって、こんなことも出来ないとやばいような~www^^;
    (まぁ~。私が他の方法を知らないだけの可能性が大ですがwww^^;)

RTB カレンダー

31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
通販サイト(ECサイト)デモへ
ラテベラボブログへ
ナノシスへ

RTBアーカイブ(旧 Widget 版)

RTB ポストランキング (旧)

RTBアーカイブ(旧 Widget 版)