問題タブ [idatareader]
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.
asp.net - asp.netIDataReaderカウント状況
IDataReaderにはカウントオプションがないことを知っています。また、データリーダーで行をカウントして、元に戻って再度読み取ることはできません。これは、前に進むだけで、巻き戻すことができないためです。私の頭に浮かぶ最善の解決策は、selectステートメントを実行し、datareaderで行をカウントしてから、別のselectステートメントを実行し、データに対して実行したいことをすべて実行することです。
この質問は何度もここに投稿された可能性がありますが、誰もこれに対する本当の解決策を与えていません。2番目のselectステートメントを実行しない場合の最良の解決策は何ですか?(選択は高価です)
ありがとうございました
database - F#でIDataReaderで文字列インデックスを使用するにはどうすればよいですか?
私はF#を初めて使用し、最初に飛び込んで、後でより正式な紹介をしようとしています。私は次のコードを持っています:
ループ本体をyieldステートメントに置き換えて、コードをクリーンアップする予定です。しかし今は、コードをデバッグしてデータリーダーを確認することで、データアクセスが機能することを確認しようとしています。現在、私はを取得していSystem.InvalidCastException
ます。上記のコメント行で示されたポイントにブレークポイントを設定し、すぐにウィンドウreader["name"]
に入力すると、データベースから有効な値が取得されるため、データベースに接続していることがわかります。ただし、reader["name"]
(ではなくreader.["name"]
)ソースファイルに入れようとすると、「この値は関数ではなく、適用できません」というメッセージが表示されます。
即時ウィンドウで使用できるのにreader["name"]
、fsharpコードでは使用できないのはなぜですか?リーダーで文字列インデックスを使用するにはどうすればよいですか?
アップデート
Jack P.のアドバイスに従って、コードを別々の行に分割すると、エラーが発生した場所がわかります。
id
object {long}
デバッガに応じたタイプです。
.net-4.0 - Sybase DB の .Net 1.1 および .Net 4.0 における IDataReader の問題
以下のように、クエリの結果を適切にフェッチするsybase DBがあります...
interestOnLoan
上記のフィールドの計算方法に注意してください。
このクエリを SQL Advantage ツールで実行すると、正常に実行され、 の計算値が得られますinterestOnLoan
。OleDB 経由でこのクエリをロードする .Net 1.1 API を使用してこのクエリを実行すると、正常に実行されます...
私の結果セットは大丈夫です。
しかし、.net 4.0 で上記のコードを実行すると、結果セットは次のようにエラーになります。
「Decimal に対して値が大きすぎるか小さすぎます。」
問題のある値は、以下のようinterestOnLoan
にコマンドも実行したためIDataReader
です...
ここでは、 dr[i] からの読み取りdataRow[((DataColumn)listCols[i])] = dr[i]
に問題がある場所でエラーが発生します。
観察されたとき、i
th 列は InterestOnLoan に他なりません。
したがって、どういうわけか.Net 4.0はこの値を読み取ることができません。などの他の 10 進数値を正しく読み取ることができますclientPrice
。
どうしてこうなるのか……。
DataReader
また、デフォルトでas Double
(の代わりに)に値をロードする方法はありDecimal
ますか?
asp.net - ExecuteReader には、オープンで使用可能な接続が必要です。接続の現在の状態は接続中です
ASP.NET Web ページがあります。4 を利用しますBackgroundWorkers
。各 bw は、データベースからいくつかのデータを取得します。
データベースに接続するためのコードは次のとおりです。
コンストラクタでは、this.dbConnection = new OdbcConnection(networkdetails);
各 bw は、上記のコード スニペットを使用してデータベースにクエリを実行し、値を取得します。コードは時々完全にうまく動作します。それ以外の場合は、上記の例外がスローされます。
私が間違っているかもしれないことについて何か助けはありますか?
c# - オートマッパーを使用してデータセットを複数のテーブルにマップするにはどうすればよいですか
免責事項:これは、もう利用できない古いスタックオーバーフローの投稿からのコピーペーストですが、まったく同じ問題があるため、回答がなかったので再投稿するのが適切だと思われました。
データセットに入力される 4 つの結果セット (連絡先、住所、電子メール、電話) を返すストアド プロシージャがあります。AutoMapper を使用して複雑なオブジェクトを作成したいと考えています。
データを取得して連絡先のリストを返すメソッドがあります。DataSet が作成されたら、テーブル間の関係を定義します。
CreateDataReader メソッドを使用して DataSet (またはテーブル) をリーダーに変換する多くの例を見つけました。それがここで行っていることです。このメソッドは、実際には最初のテーブルをオブジェクトに解析しますが、関連するテーブルを列挙しません。
Contact オブジェクトのマッピングに何かが欠けているように感じますが、従うべき良い例が見つかりません。
連絡先オブジェクトを手動で設定してコントローラーに渡すと、直接マッピングを使用して ContactModel オブジェクトが適切に読み込まれます
私がやりたいことは可能ですか?
.net - IDataReader.Dispose() は接続を閉じますか?
私が継承した典型的なクエリ実行パターンは次のようになります。
ブロックが終了query.Connection
した後、開いたままになりますか?using
c# - 列が欠落している DataTable で AutoMapper を使用する
AutoMapper を使用してデータテーブルをリストにマップしています。
私のシナリオでは、外部変数に応じてデータテーブルの列が変わる場合があります。
次の方法で、データテーブルをオブジェクトに正常にマップできます。
これはすべてうまくいきます。ただし、テーブルに存在する場合と存在しない場合がある列の整数に変換する必要があるプロパティがいくつかあります。
例:
列「HowManyOrders」が常にテーブルに存在するとは限らないため、列が存在するかどうかを確認し、存在する場合は値を変換するにはどうすればよいですか?
c# - LumenWorks (高速 CSV リーダー) から IDataReader を使用してカスタム クラスを作成し、複数の異なるファイル バージョンがある場合に SqlBulkCopy を使用するにはどうすればよいですか?
メモリの問題により、DataTable を IDataReader に置き換える/変換することにしました。
かなりの時間 Google と MSDN で検索した後、http://www.michaelbowersox.com/2011/12/22/using-a-custom-idatareader-to-stream-data-into-a-databaseでこれを見つけました。 /およびSql Serverの何百万ものレコードを一括挿入します。
私はLumenWorks Fast CSV Readerを使用しているため、CsvReaderにIDataReaderに2つの異なるフィールドバージョンを使用させる方法をまだ理解していません。:-( csvReader.FieldCount がここで重要ですが、IDataReader インターフェイスを持つ 2 つの新しいクラスのいずれかを使用するように CsvReader に指示する方法がわかりません。以下の元のスクリプトと変更されたスクリプトを参照してください...ありがとう...
//元のスクリプト...
// 新しいスクリプト...
//サンプルスクリプト...