問題タブ [sqlconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ユーザー「username」のログインに失敗しました
MSSQL サーバーのテーブルから一連の行を選択するフォームがあります。現在、このフォームはデータの更新に使用されていますが、フォームを使用してデータを更新した後、正しく行われますが、次のページにリダイレクトされます。そのテーブル内のすべての行のデータグリッドであり、別の行を選択して更新することができます。もう一度更新した行を選択すると、「ユーザー 'slehan_ticketadmin' のログインに失敗しました」というメッセージが表示されます。
データを更新するために 1 分前にフォームを使用したため、ユーザー名とパスワードが正しいことがわかりました。ホストが制限しているため、SQL エラー ログを表示できませんが、更新フォームのコード ビハインドを次に示します。
ご覧の Ticket クラスは、SQL Server から更新/選択/削除されたチケットのデータを保持する単なるクラスです。構造化された方法でデータを変更/保持するための簡単な方法です。次の行に注意を向けたいと思います。
データベースからチケットを挿入/選択/更新/削除する一連のメソッドを持つ TicketDatabase という別のクラスがあります。selectTicketFromDatabase() メソッドのスタブを次に示します。
これをローカルホストサーバーでテストして、サーバーまたはコードがエラーの原因であるかどうかを確認しますが、この特定の問題に対する提案/サポートは引き続き受け付けています。
前もって感謝します!
.net - トランザクションスコープでSQL接続を開くことは重要ですか
CN1 という sqlconnection を作成しました。次に、この CN1 を開きます。コードの後半に transactionscope があります。この CN1 接続で SQL コマンドを実行すると、これはトランザクション内ですか?
コードは次のようになります。
sql - WebサービスのベストプラクティスにおけるSQL
トランザクションを使用せずに、Microsoft SQL Serverを使用してデータを読み取る(そして読み取るためだけに)ステートレスWebサービスを作成しています。次の中で最も優れているものは何ですか。
- Webサービスを呼び出すたびにSqlConnectionを開始する、または
- 静的フィールドにSqlConnectionを保存します。
IMHO、最初のアプローチはリソースが多すぎます(10のクライアントがWebサービスに10のリクエストを行うと、データベースの100倍が開きます...)が、2番目のアプローチには問題があるのでしょうか。多分競合状態?またはセキュリティの問題?
c# - C# で新しい SqlConnection を作成する際のオーバーヘッド
しばらく前に、すべてのデータベース行が のサブクラスで表される .net アプリ用の ORM レイヤーを作成しましたDatabaseRecord
。Load()
などのメソッドがいくつかありますSave()
。私の最初の実装では、DatabaseRecord
たとえばのコンストラクターで DB への接続を作成しました。
次に、データベースにアクセスするメソッドの最初と最後で、その SqlConnection に対してOpen()
andを呼び出します。Close()
これは、(プログラミングには精通しているが、c# と .net には慣れていない) 私には、物事を行うための最も効率的な方法であると思われました。
私はちょうどいくつかの読書をしてきましたが、このパターンは多くの場所で推奨されているようです:
なぜそれが望ましいのかがわかりDispose()
ます.途中で行ったことがキャッチされない例外を引き起こしたとしても、接続は自動的に行われます. このように何度も呼び出す可能性があるため、オーバーヘッドがどのようなものか疑問に思っていましたnew SqlConnection()
。
接続プールがオンになっているため、オーバーヘッドは最小限であり、2 番目のアプローチがベスト プラクティスであると思いますが、私の仮定が正しいことを確認したかっただけです。
c# - 終了時に SqlConnection をクリーンアップする C# で IDisposable クラスを作成する
誰かが推奨した以前の質問への回答で:
SqlConnection をクラスのメンバー変数にしますが、クラスを IDisposable にして、クラスが破棄されるときに SqlConnection を破棄します。
私はこの提案(以下)の実装をまとめましたが、この実装が正しいことを確認したかったのです(明らかに、接続を開く以外は何もしませんが、接続を使用するメソッドがそこにあるという考えですそして、それが存在し、開かれていることに依存することができます)。
これは機能しますか?DatabaseRecord のインスタンスを使用するクラスは何か特別なことをする必要がありますか、それともインスタンスが使用/参照されなくなったら Dispose が自動的に呼び出されますか? using (var connection = new SqlConnection("...")) { }
これは、接続が必要な個別のメソッド本体で使用するよりも効率的/優れていますか?
c# - SqlDataReaderをそのSqlConnectionオブジェクトから「デタッチ」するにはどうすればよいですか?
SqlDataReaderを返すメソッド(「GetDataReader」と呼びましょう)があります。これは、データベースへの永続的な接続を維持するSingletonDataFactoryクラス内にあります。
これに伴う問題は、返された後も、DataReaderがDataFactoryのConnectionオブジェクトに「接続」されていることです。したがって、GetDataReaderを呼び出すコードが、戻ってくるDataReaderでClose()を呼び出すことを確認する必要があります。そうしないと、次のように接続が「ロック」されます。
このコマンドに関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります。
GetDataReaderから返送する前に、DataReaderを「デタッチ」するにはどうすればよいですか?それか、クローンを作成してクローンを送り返しますか?呼び出し元のコードを常に明示的に閉じる必要はありません。
ここにはベストプラクティスが必要です。
アップデート:
ご意見ありがとうございます。肝心なのは、DataReaderを使用する習慣を失い、DataTablesに切り替える必要があるということです。それらははるかに管理しやすいです。
また、接続プールに関する注意事項にも感謝します。私はそれについて知っていましたが、2つと2つを組み合わせなかっただけで、車輪の再発明をしていることに気づきました。
sqlconnection - Open() 中に、SqlConnection.ServerVersion が System.InvalidOperationException をスローします。
Web サービスを実行する場合、応答方法を知っている Web ページ。サービスはデータベースに接続します。sqlconnection.open 呼び出し中に、ASP .NET コードは次の例外をスローします。
sqlConnection.ServerVersion' がタイプ 'System.InvalidOperationException' の例外をスローしました
注: 私は自分の開発マシンでこれを実行しています。ライブ Web サーバーで実行すると、すべてがうまくいきます。それは私のシステムに固有のものです。
Sql Server 2008 の構成設定がありませんか?
注: 最近 Sql Server 2005 から 2008 にアップグレードされました
sqlconnection - SqlConnection.open() は TransactionException 0xe0434f4d をスローします
SQL Server 2005 dbase に接続すると、コードは正常に動作します。しかし、SQL Server 2008 データベースに接続すると失敗します。
シナリオ: Webservice は最初に 2008 dbase に正常に接続します。次に、COM+ オブジェクトでの呼び出し中に、接続が失敗します。
VS2008 を使用するようにプロジェクトを最近アップグレードし、Sql Server 2008 にアップグレードしました。
アイデアはありますか?
java - db2への特定の接続のSQLコマンドをトレースする方法は?
中央ビルドサーバーをセットアップ中です。サーバーは、すべての環境にデプロイされる公式のビルドアーティファクトを生成する責任があります。アプリケーションの1つには、データベースに書き込むビルドステップがあります。デプロイ時に、このビルドステップを適切な環境で実行する必要があります。このビルドステップを後で確実に再現することは困難で費用がかかるため、後で展開時にSQLスクリプトのみを実行するSQLをキャプチャするというアイデアが生まれました。
SQLを生成するソースコードを制御することはできません。これは、hibernateを使用するJavaプログラムです。休止状態のトレース機能を使用するためにlog4j.properties/log4j.xmlをどこに配置するかはまだわかりません。また、「?」を示すプリペアドステートメントに問題がある可能性があります。実際の値の代わりに。
DB2のActivityMonitorとその使用方法の経験がある人はいますか?または、休止状態の構成でdb2ドライバーを置き換えるなどの他の(より簡単な)オプションはありますか?ただし、DB2Dialectドライバーを使用したいのですが。
編集:私はデータベース構造を制御できません。データベース構造が更新されるか、プロセスが将来別のテーブルに書き込む可能性があります。これは、現在設定しているソリューションに影響を与えることはありません。
c# - SQL 接続を開いたままにしておくと、どのような不利益がありますか?
これは簡単な質問のようですが、「close()」関数を呼び出さないことのデメリットが気になります。