強く型付けされたデータセットとストアドプロシージャを使用するアプリを開発してきました。私は卒業したばかりで、これが道として私たちに売られた方法でした。私は深刻な疑問を持ち始めています。
クライアントから、SQLServerからMySQLに変更する可能性があるとのアドバイスがありました。私が読んだことから、移行がより困難になる可能性があるため、ストアドプロシージャを使用しない方がよい場合があります。とにかく、ウィザードを使用して新しいテーブルアダプタクエリを実装し、[新しいストアドプロシージャを作成するのではなく、SQLステートメントを使用する]を選択しました。
クエリへの呼び出し
Intranet.administratorsDataTable dt = taAdministrators.GetAdministrators();
ここで、このエラーが生成されます。
executereaderには、開いていて利用可能な接続が必要です。接続の現在の状態は閉じています
この自動生成されたコードに接続がない理由がわかりません。二日酔いで、これに対処することができません。作業を行うために、とりあえずSPに戻ることにしました。このエラーは引き続きスローされます(同じテーブルアダプター、同じメソッド名ですが、SPを使用するように再構成されています)。他のすべてのDB呼び出しは正常に機能します。
SPを使用するようにアダプタを変更したにもかかわらず、生成されたSQLコードがまだどこかに浮かんでいると思います。誰かがそれがどこにあるか教えてもらえますか?それで私はそれを削除できますか?
別の注意点として、私はSqlConnectionとSqlCommandを手動で使用する方がはるかに優れたオプションであると考え始めています。これらのクエリ「ツール」を使用すると、データベーステーブルの変更などの柔軟性に関して、多くの問題が発生する可能性があります。あなたはより経験豊富な人々がそれが正しいかどうか教えてくれますか、それともテーブルアダプターの使用を提唱していますか?
*編集 すると次もスローされます:
操作が無効です。接続が閉じられます。
と
このコマンドに関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります。