問題タブ [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.
.net - SqlCommand.Dispose は接続を閉じますか?
このアプローチを効率的に使用できますか?
私の懸念は: SqlCommand の Dispose メソッド (using ブロックを終了するときに呼び出される) は、基になる SqlConnection オブジェクトを閉じるかどうかです。
c# - C#-SQL:StoredProcedureのバッチを実行するには?
編集:
私の問題はもう問題ではありません: パフォーマンス テストをやり直しましたが、致命的な愚かなエラーが発生しました: ミリ秒から秒を取得するために x1000 を忘れていました :/ 申し訳ありません。
情報:
- PC からローカル ネットワーク上のデータベース サーバーに 1 秒あたり約 1900 の更新を行っています。
- プログラムが DB と同じマシン上にある場合、毎秒 3.200 の更新。
- データベース サーバー上の PC から 1 秒あたり 3.500 の更新 新しい SQLConnection を再作成して再度開くことはありません。
- バッチ テキストで 1 秒あたり 5.800 の更新。私の 10.000 行の場合、5 秒かかる場合、私のプログラムでは問題ありません。ご心配をおかけして申し訳ありません。
実際には、SQL ストアド プロシージャを使用してデータベースに行を作成し、SQL インジェクションを回避しています。C# では、次のメソッドがあります。
挿入する行が 1 つまたは 2 つある場合に最適です。しかし、1,000 人のユーザーと 10,000 の製品と 5,000 のペットを作成する必要がある場合、それは最善の解決策ではありません。ネットワーク トランスポートで膨大な時間を失うことになります。
チェックインしなくても、限られた量のコールバックしか使用できないと思います。だから私は10.000回呼び出したくありません:
もう 1 つの方法は、バッチ テキストを作成することですが、SQL インジェクションのリスクがあります (それは醜いです)。
.Net でそれを管理する「SqlCommandList」オブジェクトはありますか? データベースに大量の書き込みを行うにはどうすればよいですか? そのための良いパターンは何ですか?
.net - .net SqlCommand.ExecuteReaderは接続を閉じますか?
この文では:
例外が発生した場合、接続を閉じますか?
.net - パラメータをSQLCommandに渡す最良の方法は何ですか?
パラメータをSQLCommandに渡す最良の方法は何ですか? できるよ:
また
また
最初のものは、パフォーマンスに関してもエラーチェックに関しても、何らかの形で「優れている」ようです。でも、もっとはっきりと知りたいです。
dataset - プログラムで DataSet SqlCommand CommandText を変更する方法
多数のテーブルを含む生成された DataSet があります。1 つのテーブルには、15 歳以上の人を選択するために使用するカスタム クエリがあります。プログラムの作業中にこのクエリを変更して、クエリが「select * from people where age > 17」のようになるようにします。これで、'select * from people where age > 15' のようになります。
私が知っているのは、DataSet でのこのクエリの名前です。GetNotYoungPeople です。これで私を助けてもらえますか?
c# - DB への IDbCommand 出力を取得する方法は? (。ネット)
SqlCommand オブジェクトがあり、その ExecuteNonQuery メソッドを実行します。クエリは失敗しますが、クエリを取得してデバッグする方法がわかりません。私たちを手伝ってくれますか?
更新現在、コマンドを読み取るために Wireshark (tcpdump) を使用していますが、これは最善の解決策ではないと思います
更新CommandText プロパティは、ストアド プロシージャ名のみを提供します。パラメータを含むコマンド全体が必要です。
asynchronous - 非同期 SQLCommand と CCR
Jeffrey Richterによるこの msdn 記事のデモ コードを試してみました。
SqlCommand.BeginExecuteReader を処理するために、彼の ApmToCcrAdapters に新しい関数を追加しました。読む前にリーダーを閉じているだけです。
次のコードは、FromIteratorHandler を提供するために使用されます。
次に、次のコードを呼び出します。
.net - SQLCommand.ExecuteScalar() - System.NullReferenceException をスローするのはなぜですか?
次の関数の何が問題なのか、誰でも気付くことができますか?
行 `userID = (int)cmd.ExecuteScalar(); の理由がわからない 例外をスローします。
ありがとう
c# - 列が整数であっても、Select ステートメントの IN 句で ID の文字列を指定するにはどうすればよいですか
を使用してデータをページングしObjectDataSource
ており、次の方法があります。
EmployeeIDは整数であるため、内部に配置したものはすべてemployeeIds
整数に変換されます。ただし、キーワードを使用しているため、コンマで区切られた ID のリストIN
に置き換えたいことは明らかです。employeeIds
しかし、行を置き換えると:
次のようなもので:
EmployeeIds
が整数であるときに文字列を指定したため、例外が発生します。それで、どうすればそれを行うことができますか?
ありがとう。
編集:
返信から、これは手動で行う必要があることを理解していますが、このメソッドを含むクラスは によって自動的に作成されますObjectDataSource
。employeeIds
では、実行時に値を提供するにはどうすればよいですか?
parameters - ユーザー定義型を SqlParameterCollection.AddWithValue に渡すにはどうすればよいですか?
StudentID
文字列への暗黙的な変換を行うというカスタム データ型があります。
StudentID
インスタンスを(値として)に渡しSqlCommand.Parameters.AddWithValue
てコマンドを実行すると、次のエラーが表示されます。
のようなパラメーターの型を指定SqlDbType.NVarChar
しても役に立ちません。機能する唯一の方法は、StudentID
値を文字列に明示的にキャストすることです。これは、暗黙的なキャストの目的を無効にします。
フレームワークは利用可能な変換を考慮していないと思います。StudentID
プリミティブ型への明示的なキャストを必要とせずに、コマンドがクラスを処理できるようにするためにクラスに対してできることはありますか?
この MSDN の記事では、プリミティブ型の処理方法について説明していますが、ユーザー定義型については説明していません。最も近いのは object で、Variant として渡されます。
失敗の正確なポイントは、署名付きの System.Data.SqlClient.MetaType.GetMetaTypeFromValue メソッドにありますprivate static MetaType GetMetaTypeFromValue(Type dataType, object value, bool inferLen)
。リフレクションは、プリミティブ型を探すことを明らかにし、TypeCode がオブジェクトの場合、SqlBoolean などの Sql* データ型を探すため、非常に特定の種類のプリミティブまたは Sql* 型を探しているようです。