JSスクリプトADOでMySQLに接続


私はいつもJSスクリプトをよく使うツール言語として使うことに慣れています.例えば、インポートエクスポートプログラム、管理プログラムなどを書きます.データベースのこの大部分はSQL Serverを使って、ADO接続は最もよく使われて、これまで何の問題も発生したことがなくて、ほほほ.
今日いくつかデータを本机のMySQLデータベースの中で手に入れたくて、大概数万条があって、やはりシナリオを使うようにしましょう、どのみち自分はとっくにいくつかシナリオライブラリを书いてそしてコンポーネントに登录して、直接使うのはいいです.しかし、スクリプトライブラリのデータベース接続のデフォルトはSQL Serverで、MySQLまで変更しなければなりません.インターネットで調べてみると、簡単に案が見つかりました.
1、MySQL ODBC Driverをインストールして、このネット上は比較的に多くて、勝手に1つのインストールを探してダウンロードして、私は3.51バージョンを使っています.インストールが完了した後にツールを管理します》ODBCデータソースドライバの中で1つのドライバができます:MySQL ODBC 3.51 Driver
2、ADO接続文字列:
MySQLは次のとおりです.
sql = "driver={MySQL ODBC 3.51 Driver};server=" + this.server + ";port=3306;option=131072;stmt=;database=" + this.db + ";uid=" + this.user + ";pwd=" + this.passwd;

SQL Server  :

sql = "driver={sql server};server=" + this.server + ";database=" + this.db + ";uid=" + this.user + ";pwd=" + this.passwd;

そこでADO接続はこれで終わり、他のプログラムは標準的なADO方式なので、何の変更もせずに使えます^^;
不快なのは、JAVAのプログラム開発をしている時だけ中国語の問題があると思っていたのに、Windowsの下でJS+MySQLという憎らしい中国語の問題を使うのも大変でした:(
INSERT/UPDATE/SELECTでも中国語の文字に触れると異常や文字化けしが発生し、データベースの文字セットをUTF-8に変えて試して挿入できます.しかし、私のMySQL Frontや他のデータベースの文字セットはデフォルトでGB 2312に設定されているので、データベースの中の中国語を直接閲覧することはできません.もちろん、不快です.
MySQL 5をよく読みました.xの中国語マニュアルの10.3.6文字セットと校正の一節を接続し、ついに原因を発見した.文字セットを制御する3つの変数があります.
   * character_set_クライアント、これはユーザーがMySQLクエリーに使用する文字セットを教えてくれたものです.    * character_set_接続、MySQLがユーザークエリーを受信したら、character_に従います.set_Clientはそれをcharacterに変換します.set_接続設定の文字セット.    * character_set_results,MySQLは格納したデータをcharacter_に変換するset_resultsで設定した文字セットをユーザーに送信します.
SQL接続が確立されると、SQL文が呼び出されます.
set character_set_client = gb2312 set character_set_connection = gb2312 set character_set_results = gb2312
上記の3つの変数を設定すると、すべてが解決されます.さらに、より簡単な方法は、文を呼び出すことです.
set NAMES gb2312
上の3文に代わります.
振り返ってみるとなぜMySQLがアンケートを設定したのかmy.iniにはパラメータdefault-character-set=gb 2312が設定されていますが、このような場合はありますか?
ADOがMySQL ODBC 3.51 Driverを呼び出してMySQLにアクセスするときにデフォルトの文字セット用のタイムUTF-8を駆動しているのかもしれませんが、ADOオブジェクトはパラメータ、メソッド、または接続文字列を提供してデフォルトの文字セットを変更していないので、このような状況が発生します.
反省してみます:すべての人はJAVA、MySQLなどのプログラムをする时基本的にすべて多くの文字集、コードの问题に出会うことができて、ASP/をします.NET、SQL Serverの開発時に人がいないのはなぜですか?
柔軟性の代償は必然的に複雑さなのかもしれないが...