3

デフォルトのスキーマ/インスタンスを接続文字列 (または特定のコマンド) の一部として指定しようとしているので、クエリの一部である必要はありません。

OdbcConnection conn = new OdbcConnection("Driver={IBM DB2 ODBC DRIVER}; Database=myDB; Hostname=myHostName; Port=myPort; Protocol=TCPIP; Uid=myID; Pwd=myPW;");
OdbcCommand comm = new OdbcCommand("select count(*) from customers", conn);
conn.Open();
var value = comm.ExecuteScalar();
conn.Close();

残念ながら、これはエラーで失敗します:

ERROR [42S02] [IBM][CLI Driver][DB2] SQL0204N myID .customers は未定義の名前です。SQLSTATE=42704。

スキーマ/インスタンスがあるはずのmyIDを使用していることに注意してください。スキーマ/インスタンスを明示的に指定した場合:

OdbcCommand comm = new OdbcCommand("select count(*) from mySCHEMA.customers", conn);

期待どおりに動作します。mySCHEMAMS SQL Server を使用する場合の「初期カタログ」のように、接続文字列の一部として指定したいと思います。

たくさんの実験とグーグルの後、私はそれを理解できないようです. 何か案は?

4

1 に答える 1

6

うわー、これは明らかでした。CurrentSchema=mySCHEMA接続文字列が必要なだけです。

なんらかの理由で、 http://www.connectionstrings.com/ibm-db2 (スキーマ、デフォルト スキーマなどのあらゆる種類のバリエーションを試した)で作業した後、すぐにそのドットを接続しませんでした。うまくいけば、これは将来誰かを助ける...

于 2012-05-23T21:26:17.500 に答える