問題タブ [oledbdatareader]

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 に答える
1244 参照

vb.net - 条件式のデータ型の不一致

dr = cmd.ExecuteReader() のエラー

dr は OleDbDataReader として宣言されています

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

ms-access - MS Accessの「Number」型はどのC#データ型に対応していますか?

http://msdn.microsoft.com/en-us/library/office/aa211091(v=office.11 ​​).aspx によると、MS Jet データベース エンジンには "NUMBER" データ型がありません。それでも、クエリを実行しているテーブルの MS Access デザイン ビューに表示されるのは、

クエリで取得している最初の列のデータ型は「NUMBER」データ型です。

その値を Int32 と Double に変換しようとすると、次のコードが壊れます。

string、int、または double への変換に失敗するのはなぜですか? 代わりに何に変換すればよいですか?

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

c# - クエリで不要な MS Access テキスト フィールドを処理する最も安全で実用的な方法は何ですか?

MS Accessのクエリで、テキスト(文字列)値が空(または、実際にはnull)である可能性がある場所を防御的にクエリする必要があることを学びました(「指定されたキャストは無効です」例外を回避するにはどうすればよいですか? ) " IIF(ISNULL(colName),'',colName) " コンストラクトを使用して、次のようにします。

これは、required == false と指定された Text 列にのみ必要であると想定しています。私の ASSumption は間違っていますか? 必須ではないすべての列でこれを行う必要がありますか?

具体的には、データ型 double の列に関して防御的にクエリを実行する必要がある場合、これはその方法ですか?

?

または、さらに良いこと (いつでも期待できます): すべての列にデータが含まれていない結果セットを処理するための、よりクリーンで邪魔にならない方法はありますか?

違いがある場合は、OleDbDataReader を使用して .NET 4.5.1 Web API アプリから MS Access データベースにクエリを実行しています (新しいワインスキンの古い泣き言?)

アップデート

Re: HansUp の (Reach for the Sky?) の提案: 「.Net 側からこれを攻撃し、コードをより Null に対応させる方が生産的になるかもしれません」より効率的/安全な方法があります:

?

更新 2

DBNull をチェックするようにコードを変更し、DBNull の場合はデータ型 (Text の場合は string.empty、int の場合は 0、double の場合は 0.00) に基づいて値を一般的な値に設定しましたが、それでも同じエラー メッセージが表示されます。

更新 3

この行に「指定されたキャストが無効です」というメッセージが表示されます。

dbp_id は Access テーブルの LongInt です

クエリから返されるデータには、その列に次の値が含まれます。

...では、これらの値のいずれかが long へのキャストに失敗している可能性はありますか? 「(long)」の代わりに「Convert.ToX()」を使用する必要がありますか? または...???

0 投票する
0 に答える
252 参照

oracle - VB.NET OLEDBDataReader - 結果セット (DATETIME) の Null 値

私は VB.NET プログラミングが初めてなので、例を示していただければ幸いです。

Oracle 11g データベースへの OleDB 接続があります。テーブルから 1 つの行を読み取り、行オブジェクト (mClockInOutInfo) を設定しようとしています。私が直面している問題は、返された行に null の DateTime (タイムスタンプ) 列があることです。

もちろん、mClockInOutInfo.RowDate = dr.GetDateTime(0) から始めました (RowDate 列がクエリの最初の列であると仮定します)。

null をチェックする必要があることがすぐにわかったので、 = If(IsDBNull(dr.GetDateTime(0)), DBNull.value, dr.getDateTime(0)) をコードに追加しました。(私は今、このあたりで見つかった NullSafeString 関数をどこかで使用しています。しかし、DateTime 型には何もありませんでした。作成しようとしましたが、成功しませんでした。したがって、まだ日時列の If(IsDbNull(...)) コードを使用しています。 .

私が抱えている問題は、「指定されたキャストが無効です」というエラーが表示されることです。その声明を評価するとき。.GetDataTypeName(0) メソッドで列の型を確認しました。DBTYPE_DBTIMESTAMP を返します。スキーマ情報を調べて、その列が実際に探している情報であることを確認しました。私が知る限り、if() ステートメントの IsDBNull(drRecent.GetDateTime(0)) 部分の評価中にエラーが生成されています。ステートメントを複数行の if ステートメントに分割することでこれを確認しました: if IsDBNull(dr.GetDateTime(0)) Then ... Else ... End If

if IsDBNull(...) 行によってスローされたのと同じキャスト エラーが発生します。

そこで、SQL 文字列に戻り、空のデータを含む列で Coalesce を実行しました。同じキャストエラーを受け取りました。最後に、イライラして、TO_DATE 関数を使用するように SQL クエリを変更し、適切な形式パラメーターを使用して日付文字列を入力しました。私はまだこの同じキャストエラーを受け取ります。

mClockInOutInfo のプロパティは DateTime として定義されています。まったく同じ方法で定義された他の列があり、テーブルにデータがある列はエラーを出していません。

データベースで DateTime (Timestamp) 列に null が許可されている場合、私が何をすべきかについてのアイデアはありますか? すべてのアイデアを歓迎します。前もって感謝します。

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

c# - OleDb コードを非同期で実行するにはどうすればよいですか?

私は、Web のダウンロード/読み取りを行おうとするときに、非同期の例をたくさん見てきました。しかし、OleDb のサンプルなどを見つけることができませんでした (または、より優れた同等のものはありますか?)。C# 5.0 の新しく簡素化された Async および Await 機能を使用したいと思います。

これは、私が現在 OleDb をどのように使用しているかのほんの一例です。

リクエストに応じて、いくつかのデータ リーダーを次々と実行していますが、新しい結果がフォームに表示されるまでにかなりの時間がかかります。また、OleDb を使用して Access データベースにアクセスしています。

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

c# - C# を介した Access データベースの LIKE クエリは、常に 0 の COUNT(*) を返します

次のコードを調べてください。

整数値ではなく、常に 0 としてカウントされます。デバッグ中にクエリを取得して MS ACCESS 2013 で実行すると、正しい結果が得られます。何が問題なのかわかりません。

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

c# - テキスト ボックスへのアクセスから long Int を表示する

コンボボックスで選択した顧客名のIDをテキストボックスに入力したい。customerID の下にエラーが表示されます


「System.Data.Oledb.OledbDataReader」の不明なメソッド「GetInt32(string)」


これはコード全体のコピーです