問題タブ [sqlcommand]

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.

0 投票する
2 に答える
3191 参照

c# - SqlCommand.Parameters.AddWithValue が正しい結果を返さない

C# でパラメーター化されたクエリを使用することになると、私は少し初心者であることを認めます (学習は速いですが!)。私のために機能するパラメーター化されたクエリを取得します。

これは非常に単純化された例です。さらに情報が必要な場合は、喜んで提供します。

SQL Server Profiler を使用すると、次のクエリが発行されていることがわかります。

If I run that query directly in SQL Server Management Studio, it returns 0. ただし、次のようにクエリを変更すると:

実行すると、正しい 51 のカウントが返されます。

ここで何が欠けていますか?

0 投票する
6 に答える
15137 参照

c# - SqlCommand() ExecuteNonQuery() はコマンド テキストを切り捨てます

カスタム db 展開ユーティリティを構築しています。SQL スクリプトを含むテキスト ファイルを読み取り、データベースに対して実行する必要があります。

かなり簡単なもので、これまでのところとても良いです。

ただし、問題が発生しました。ファイルの内容は正常に完全に読み取られますが、SqlCommand に渡されてから SqlCommand.ExecuteNonQuery で実行されると、スクリプトの一部のみが実行されます。

Profiler を起動して、コードがすべてのスクリプトをパスしていないことを確認しました。

0 投票する
2 に答える
3016 参照

database - SqlCommandを使用してデータベース内のすべてのテーブルを削除するにはどうすればよいですか?

「すべてのテーブルを削除する」タスクに関する他の投稿とは異なり、この質問は特にSqlCommandデータベースへのアクセスに使用することに関するものです。

同僚は、どのように試みても、SqlCommandを介してデータベースからすべてのテーブルを削除できないという問題に直面しています。彼は、アクティブな接続(SqlCommand自体による接続)がある限り、そのようなアクションを実行できないと述べています。

これは可能で簡単なはずだと思いますが、データベースについての手がかりがあまりないので、ここに来て質問しました。C#(または、さらに言えば、任意の.NET言語)で短いコード例を提供できれば素晴らしいと思います。

追加情報が必要な場合は、コメントを残してください。

0 投票する
4 に答える
5980 参照

c# - SqlCommand オブジェクトから送信される SQL は何か

C# ベースの asp.net ページに SqlCommand オブジェクトがあります。SQL と渡されたパラメーターは、ほとんどの場合機能しています。動作しないケースが 1 つあります。次のエラーが表示されます。

文字列型やバイナリは省略されます。ステートメントは終了されました。

エラーを理解しましたが、データベース内のすべての列は、送信されるすべてのものを保持するのに十分な長さである必要があります。

私の質問、

データベースに送信されている実際の SQL が SqlCommand オブジェクトからのものであることを確認する方法はありますか? エラーが発生したときに SQL をメールで送信できるようにしたいと考えています。

ありがとう、ジャスティン

0 投票する
1 に答える
1606 参照

c# - Database.ExecuteNonQuery が返されない

非常に奇妙な問題があります。SqlCommand.ExecuteNonQuery を使用して C# から特定のデータベース ストアド プロシージャを実行すると、ストアド プロシージャが実行されません。

さらに、SQL プロファイラーはコマンドをまったく登録しません。コマンド タイムアウトを受信せず、例外もスローされません。

最も奇妙なことは、このコードが 1,200,000 回以上正常に機能したことですが、データベースに挿入しようとしているこの 1 つの特定のファイルについては、永遠にハングアップするだけです。

アプリケーションを強制終了すると、データベース サーバーのイベント ログに次のエラーが表示されます"A fatal error occurued while reading the input stream from the network. The session will be terminated (input error: 64, output error: 0).。 SQL プロファイラーはそうではないと言っていますが、データベース サーバーがコマンドを受信して​​いると思われます。

適切なアクセス許可が設定されていること、およびこのコードとストアド プロシージャが他のファイルで正常に動作するため、接続文字列が正しいことを知っています。

以下は、ストアド プロシージャを呼び出すコードです。挿入しようとしているファイルが 33.5 MB であることに注意することが重要かもしれませんが、500 MB を超えるファイルを 10,000 個以上追加したため、サイズは問題ではないと思います。 :

呼び出しを行っているサーバーとデータベース サーバーの間にファイアウォールはなく、この問題をトラブルシューティングするために Windows ファイアウォールが無効になっています。

0 投票する
3 に答える
399 参照

c# - 奇妙なエスケープ文字の質問

次の c# コード<% %>を ac# asp.net ページのリテラルに埋め込んでいます。

\'どうやらエスケープ文字を使用できないため、これは私のコードを壊しています。なぜそうなのですか?のような他のエスケープ文字\"が機能しているのに、なぜ機能しないの\'ですか?

0 投票する
2 に答える
5653 参照

c# - SqlCommand.Parameters.AddWithValue の問題: プロシージャまたは関数 X は、指定されていないパラメーター @Y を必要とします

次のコードに問題があります。List<SqlParameter>次のコードを実行するメソッドにパラメーター ( ) を渡しています。

実行すると、SQL Server は、proc が指定されていないパラメーターを予期していることを示すエラーをスローします。私はこのエラーを知っており、理解しています。コードをステップ実行すると、cmdExecuteReaderオブジェクトに正しい名前と値を持つパラメーターのコレクションがあることがわかります。何が問題なのですか?

0 投票する
4 に答える
8665 参照

c# - SqlParametersを使用してSqlCommandの解析されたテキストを取得することは可能ですか?

私がやろうとしているのは、パラメーターを使用して任意のsqlコマンドを作成し、パラメーターの値とタイプを設定してから、パラメーターを含めて解析済みのsqlコマンドを返すことです。SQLデータベースに対してこのコマンドを直接実行することはないので、接続は必要ありません。したがって、以下のサンプルプログラムを実行した場合、次のテキスト(または同様のもの)が表示されることを期待します。

そして、サンプルプログラムは次のとおりです。

これは、.net標準ライブラリを使用して達成できるものですか?最初の検索では「いいえ」と表示されますが、私は間違っていると思います。

0 投票する
3 に答える
1428 参照

.net - なぜ「ExecuteNonQuery」の「Non」なのですか?

私はこれが有用な質問の地獄ではないことを知っていますが、私はそれによって悩まされるのを避けられません。

では、
なぜこのメソッド(*Commandクラス内)がExecuteQueryではなく
ExecuteNonQueryと呼ばれるのでしょうか。

DBやクエリでスローするSQLステートメントではありませんか?

0 投票する
7 に答える
5626 参照

.net - パラメータを代入してSQLをキャプチャする方法は? (.NET、SqlCommand)

パラメータ置換後に完全な SQL ステートメントを取得する簡単な方法がある場合は? つまり、このプログラムが実行するすべての SQL のログファイルを保持したいと考えています。

または、これを行いたい場合は、パラメーターを取り除き、クエリ全体を古い学校の方法で 1 つの大きな文字列で実行したいだけですか?

簡単な例: 出力をキャプチャしたい:

SELECT subcatId FROM EnrollmentSubCategory WHERE catid = 1

.. このコードから:

私は Prepare() が置換を行うと思っていましたが、明らかにそうではありません。

考え?アドバイス?前もって感謝します。