HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0825
(´ω`)HSPDBによるMySQLへの接続での細かな注意点2解決


(´ω`)

リンク

2012/8/25(Sat) 12:04:02|NO.48807

四苦八苦しまくって、ようやっとDSPDBでMySQLにアクセス&コントロールすることが
できるようになりました。
やってた間に「そんなん知らんかったわ!Σ(´Д`u)」ということが結構ありました
ので、私自身の備忘録も兼ねて後に続く方々のためにここにメモしときます。

 ・MySQL本体は32bit&64bitのどちらでもいいが、ODBC Connectorは32bitを使用すること。
 ・dbsendで送信するクエリは、";"を付ける方がいい(ないとエラーの原因となりやすい)。
 ・dbsendの後はフェッチすること。
  (ほんとはSELECT句でなければ必要ないはずだけど……)
 ・dbgetsで使うバッファは忘れずに、サイズ8kくらいでsdimしておくこと
  (忘れてると、right truncateが発生しとんでもないデータが入ることになる)

また何か「知らんかった!」があったら、ここに追記させていただきたいと思います。(´ω`)



この記事に返信する


(´ω`)

リンク

2012/9/5(Wed) 11:00:27|NO.49147

ODBC経由でSQLへの接続を始める前に知っておくと助かることをさらにいくつか。(´ω`)

■SQLサーバ側の準備

 例えばMySQLの場合、最低でも1アカウントの作成とポートの開放が必要です。
 そして、MySQL Administratorを使えばそのアカウントでサーバに接続&DBの操作が
 できることを確認しておきましょう。

■クライアント側の準備

 最低でもODBCドライバをインストールするのを忘れないように。
 少なくともMySQLの場合は、クライアントマシンが32bit/64bitのどちらにも関わらず、
 ドライバは32bit版を使うのが最も無難です。

 後述するODBCアドミニストレータで先に接続を確立しておくのが初心者向け。
 仕組みがわかってきたら、dbopen命令で接続文字列を直接書くのがいいでしょう。

■ODBCのトレースログ

 HSP側ではエラー状況をほとんど把握できませんが、ODBCアドミニストレータに備わっている
 ログ機能を使えばかなり把握しやすくなります。
 Windows7なら、

   コントロールパネルから「データソース(ODBC)」を実行、ODBCアドミニストレータを起動
   ODBCアドミニストレータの「トレース」タブをクリック
   「トレースの開始」ボタンを押せば、ボタン下のパスの場所にログが記録され始める
   その状態でHSPでソースを実行する
   ODBCアドミニストレータの「トレースの停止」ボタンを押し、ログ内容を閲覧する

 全く接続ができなくとも上記ログを見れば、接続文字列がおかしいのか、それとも
 接続まではいけてるがそれ以降がおかしいのか等の状況も把握できます。

■接続文字列について

 dbopen命令で必要な接続文字列ですが、これは状況によって書き方が変わります。

  ODBCドライバをインストールしただけの場合

  接続文字列に、サーバのURLやIDやPASSなどの詳細な情報を記入します。
  通信環境に応じてプログラム側で内容を変更できる利点がありますが、そのIDやPASS等で
  確実に接続できることがわかっていないとエラーの特定が極めて難しくなります。
  "driver="で指定するドライバ名は、ODBCアドミニストレータの「ドライバー」タブ内でリストアップ
  されている名前を正確に書いてください。

   例: dbopen "driver=MySQL ODBC 3.51 Driver;server=127.0.0.1;user=root;password=rootpass;port=3306;charset=cp932;"

  ODBCドライバの「システムDSN」で既に接続を作ってある場合

  接続文字列は、すでに接続が確立されたDSN名をそのまま指定します。
  先に接続が確立した設定を使用できるので初心者向きですが、別のサーバに接続する
  場合はODBCアドミニストレータで設定変更をしないとならないという不便があります。
  ODBCアドミニストレータでの接続の作り方は、別途ググってください。( ゚ω゚ )

   ※汎用的にサーバへアクセスするための説明ですので、「ユーザDSN」「ファイルDSN」に
    ついては説明を省きます。

   例: ODBCアドミニストレータで「test」という名でシステムDSNの接続を作ってある場合      dbopen "DSN=test"



y.tack

リンク

2012/9/5(Wed) 11:20:15|NO.49150

過去ログに埋もれそうなので
せっかくなのでwikiに転載するとかどうでしょうか



ONION software Copyright 1997-2018(c) All rights reserved.