SQL LOGIN
SQL LOGIN {( dataEntry ; userName ; password ; * )}
引数 | 型 | 説明 | |
---|---|---|---|
dataEntry | Text | → | 外部データベース名、または 外部データソースのIPアドレス、または ODBCマネジャーのデータソース名、または ""で選択ダイアログボックスの表示 |
userName | Text | → | データソースに登録されているユーザー名 |
password | Text | → | データソースに登録されているパスワード |
* | 演算子 | → | Begin SQL/End SQLへ適用される 省略した場合、適用しない(ローカルデータベース)、 渡す場合、適用する |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
SQL LOGINコマンドを使用すると、dataEntry引数で指定されたSQLデータソースへ接続することができます。このコマンドは、カレントプロセスでこのコマンドの後に実行される以下のSQLクエリの対象を指定します:
- SQL EXECUTEコマンド経由
- Begin SQL / End SQLタグ内に記述されている コード経由 (* 引数が渡された場合)
SQLデータソースは次のいずれかです:
- 直接アクセスする外部4D Serverデータベース
- 外部ODBCソース
- ローカル4Dデータベース (内部データベース)
dataEntryには次の値のいずれかを渡します: IPアドレス、4Dデータベース公開名、ODBCデータソース名、空の文字列、またはSQL_INTERNAL定数。
- IPアドレス
シンタックス: IP:{: }{:ssl}
SQLクライアントは指定されたIPアドレスのコンピュータ上で実行される4D Serverデータベースに直接接続します。対象のコンピュータ上ではSQLサーバーが起動していなければなりません。TCPポートの数値を渡さない場合、デフォルトのポート (19812) が使用されます。SQLサーバー側でSQL公開ポートが変更されている場合、IPアドレスの後にポート番号を指定しなければなりません。SQLサーバー側では、データベース設定の "SQL" ページで、SQLサーバー用のTCPポート番号を変更できます。
例4と5を参照してください。
接続先のSQLサーバーでTLSが有効にされている場合 (データベース設定で設定可能)、サーバーで正しくリクエストを処理するために、IPアドレスとTCPポート番号(使用する際には必須)の後にポート番号および":ssl"キーワードを追加しなければなりません (例題6参照)。 - 4Dデータベース公開名
シンタックス: 4D:<Publication_Name>
コマンドは、ネットワーク上で指定された名前に対応する公開名の4D Serverのデータベースに直接接続します。データベースのネットワーク上の公開名は、データベース設定の"Client-Server" ページで設定されています。
例7を参照してください。
Note: 接続する (4Dデータベースを公開する) 4D SQLサーバのTCPポート番号と、4DアプリケーションのSQLサーバ用のTCPポート番号は一致しなければなりません。 - 有効なODBCデータソース名
シンタックス: ODBC:<My_DSN> または <My_DSN>
dataEntry引数に、ODBC Driverマネージャで設定したデータソースの名前を渡します。
Notes:- 4Dの以前のバージョンとの互換性のため、接頭辞"ODBC:" を省略することも可能ですが、コードの読みやすさの理由から、接頭辞を使用することをお勧めします。例2を参照してください。
- Windows環境下では、データソース名は大文字・小文字を区別します。例えば、データソースが"4D_v16"と定義されていた場合、"4D_V16"という値を渡しても失敗します。
- WindowsとMac環境下では、接頭辞"ODBC:"は大文字で入力しなければなりません。"odbc:"を渡した場合、接続は失敗します。
- 空の文字列
シンタックス: ""
コマンドは接続ダイアログボックスを表示します。接続するデータソースは手動で入力できます。
このダイアログボックスには複数のページがあります。TCP/IPページには次の要素があります。
- ターゲット名: このメニューは2つのリストから構成されています。
* 直接接続で最近開いたデータベースのリスト。このリストを更新するメカニズムは、4Dアプリケーションと同じです。ただし4DLinkファイルを格納するフォルダは"Favorites vXX"ではなく"Favorites SQL vXX" という名前です。
* SQLサーバが開始されていて、そのSQL公開ポート番号が一致する4D Serverアプリケーションのリスト。このリストは、dataEntry引数を渡さずにSQL LOGINコマンドを新たに呼び出す度に更新されます。データベースの名前の前に"^" 記号が付いている場合、安全なSSLモードを通して接続が行われたことを意味します。 - ネットワークアドレス: このエリアはターゲット名で選択したデータベースのアドレスと、必要ならTCPポート番号を表示します。このエリアにIPアドレスを入力して接続ボタ ンを押して、対象の4D Serverデータベースに続することもできます。IPアドレスの後ろにコロン (:)を置いて、TCPポート番号を指定することも可能です。アドレスの後ろにコロン(:) を付けてポートの数値を入力します。例: 192.168.93.105:19855
- ユーザ名とパスワード: これらのエリアを使用して、接続認証情報を入力します。
- ユーザDSNとシステムDSN ページは、コンピュータのODBC Driverマネージャで指定されているシステムおよびユーザODBCデータソースのリストそれぞれ表示します 。これらのページでデータソースを選択したり、認証情報を入力したりして、外部ODBCデータソースに接続できます。
接続が確立されると、OKシステム変数が1に設定されます。そうでなければ0に設定され、エラーが生成されます。ON ERR CALLコマンドでインストールされているエラー処理メソッドでこのエラーをとらえることができます。
- SQL_INTERNAL定数
シンタックス: SQL_INTERNAL
コマンドは、続くSQLクエリを内部4Dデータベースに転送します。 警告: dataEntry 引数で使用される接頭辞 (IP, ODBC, 4D) は大文字でなければなりません。
userNameには、外部データソースへの接続が許可されたユーザの名前を渡します。例えば、Oracle(R)では、ユーザ名は“Scott”かもしれません。
passwordには、外部データソースへの接続が許可されたユーザのパスワードを渡します。例えば、 Oracle(R)では、パスワードは“tiger”かもしれません。
Note: 直接接続の場合、userNameとpassword引数に空の文字列を渡すと、4Dのパスワードシステムが対象データベースで有効になっていない場合のみ接続が受け入れられます。そうでなければ接続は拒否されます。
オプションの * 引数を使用して、Begin SQL / End SQL タグ内で実行されるSQLコードのターゲットを変更できます。この引数を渡さない場合、Begin SQL / End SQLタグ内に設定されているコードは、SQL LOGINコマンドで指定されている設定を無視して、4Dの内部SQLエンジンに送られます。この引数を渡すと、Begin SQL / End SQLタグ内で実行さ れるSQLコードは、dataEntry 引数で指定されているソースへと送られます。
接続を終了してメモリを解放するには、SQL LOGOUTコマンドを実行するだけです。続くすべてのSQLクエリは、内部4D SQLデータベースへと送られます。
現在の接続を明示的に終了しないでSQL LOGINを再び呼び出すと、接続は自動的に終了します。
注: SQL LOGINによる外部接続の試みに失敗した場合、内部4Dデータベースが自動でカレントデータソースとなります。
これらの引数はオプションです。引数をまったく渡さない場合、コマンドはODBCログインダイアログボックスを開き、外部データソースを選択することができます。
このコマンドのスコープはプロセスです。つまり、異なる2つの接続を行いたい場合、2つのプロセスを作成してそれぞれのプロセス内で各接続を実行しなくてはなりません。
警告: 以下の状況においては、ODBC接続を開くことは不可能です。これらの設定ではアプリケーションのブロッキングにつながります:
- 実行中のアプリから自身へのODBC経由の接続
- 標準のクライアント/サーバー接続がすでに開いている4Dアプリケーションと4D Server間でのODBC経由の接続
例題 1
この文は、ODBCマネージャダイアログボックスを表示します:
SQL LOGIN
例題 2
ODBC プロトコル経由で外部データソース"MyOracle" と接続。SQL EXECUTEコマンドを用いて実行されたSQLクエリとBegin SQL / End SQLタグ内に収められているクエリは、この接続に送られます。
SQL LOGIN("ODBC:MyOracle";"Scott";"tiger";*)
例題 3
4Dの内部SQLカーネルに接続します:
SQL LOGIN(SQL_INTERNAL;$user;$password)