問題タブ [oledbconnection]
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# - ASP.NETでのExcelの読み取り:列のデータ形式が異なる場合、データが読み取られない
OLEDBConnection を使用してスプレッドシートの内容を読み取っている asp.net C# アプリケーションがあります。以下のコード行を使用して、Excel スプレッドシートから読み取ります。
私の列の1つには、さまざまな行に文字列、数値、日付などのさまざまな形式のデータがあります。これを実行すると、データ形式が異なると、Excelファイルからその値が読み取られません。ネットでよく検索したところ、接続文字列で IMEX の妥当性について言及する必要があることがわかりました。それを追加しましたが、肯定的な反応はありませんでした。
多くのことを調べた後、任意の組み込みの Excel ドライバーがシートの最初の 8 行をクエリし、(ユーザーの許可や知識なしに) どの種類の列であるかを判断し、そうでないものは無視することがわかりました。シートの後半でこのデータ型に適合します。
http://www.mattjwilson.com/blog/2009/02/13/microsoft-excel-drivers-and-imex/
とにかくこの問題を取り除くことはありますか?
c# - Microsoft Jet Engine を使用した XLS ファイルの読み取り
アプリケーションがファイルからデータをインポートできるようにしたいと考えていXLS
ます。私はすでにCSV
ファイルとXML
ファイルでこれを行っていますが、ユーザーのスコープを開きたいです。ファイルの読み込みに問題があります。XLS
ファイル ( 、CSV
、 ) をデータセットにロードし、XML
そこから処理します。の読み込みコードXLS
は以下のとおりです
したがって、データは正常に読み込まれますが、さまざまな列のデータ型が設定されているように見えます。これは、列の 1 つに問題があります。これはビット フィールドであり、 、 、 、 、および を受け入れることFalse
をTrue
選択Yes
しNo
ましY
たN
。後でこれをブール値に変換するコードがあります。これはCSV
ファイル (接続文字列が異なる) では正常に機能しますがXLS
、最初の 10 行がFALSE
またはTRUE
であり、11行目が であると言うとYES
、null エントリが取得されます。最初のいくつかのエントリを読み取り、それに基づいてデータ型を決定すると思いますか?
質問: 最初のいくつかのエントリに基づいて列のデータ型を識別するメカニズムをオフにする方法はありますか?
c# - C# での MSACCESS データベース接続を含む Where 句クエリの例
タイトルに似ています。Where句クエリを使用したOledb接続の例が必要です。
excel - OleDbConnectionは新しいExcelファイルの作成に失敗しました
新しいExcelファイルを作成するには、OleDbConnectionを使用する必要がありますが、この文字列で接続を開くと、次のようになります。
英語では「外側のテーブルが期待どおりの形式ではありません」というエラーが表示されます。
しかし、ファイルは新しくて空です...どうすればよいですか?
.net - 'MSysNavPaneGroupCategories' が Access 2K データベースへの .NET OleDbProvider クエリに表示される理由: WHERE MSysObjects.Name NOT LIKE 'MSys*'
MS Access データベースのすべてのテーブルとその行数をグリッド ビューで一覧表示したいと考えています。次のようにクエリを使用しています。
MS Access Query ペインでは、これは問題なく機能します。しかし、.NET で OleDbCommand オブジェクトを介してクエリを実行すると、クエリによって結果セットが生成されますが、MSysNavPaneGroupCategories を含むデータの行が取得されます。この行は、次のことを試みると常にエラーをスローします。
エラーメッセージは次のとおりです。
System.InvalidOperationException が処理されませんでした。
プロバイダは Int32 値を特定できませんでした。たとえば、行が作成されたばかりで、Int32 列の既定値が使用できず、コンシューマーがまだ新しい Int32 値を設定していません。ソース="System.Data"
したがって、私の回避策は、TEMPテーブルを作成し、代わりにそこから読み取ることです(または、列のデフォルト値を設定します...これにより、エラーは克服されますが、結果セットに不正なテーブルが含まれます)。
何が起きてる?MSysNavPaneGroupCategories は、結果セットに含まれていないはずです。
MSysNavPaneGroupCategories システム テーブルに関する情報はあまりありません。
この URLは、MSysNavPaneGroupCategories が 3 つのシステム テーブルの 1 つであることを示しています。
ナビゲーション ペイン内のすべてのコンテンツを定義します。
.. Access 2007 で。
Microsoft Office Access 2007 の新機能であるナビゲーション ウィンドウは、すべてのデータベース オブジェクト (データベース オブジェクト: Access データベースには、テーブル、クエリ、フォーム、レポート、ページ、マクロ、 Access プロジェクトには、フォーム、レポート、ページ、マクロ、モジュールなどのオブジェクトが含まれています)、レポートを実行したり、テーブルに直接データを入力したりします。
... Access 2007 で。
このテーブルが Access 2007 の機能であるのに Access 2K データベース テーブル リストに表示されるのはなぜですか? また、条件に一致しないクエリに表示されるのはなぜですか?
c# - Excel ファイルへの OLEDB 接続を開くと、Windows サービスがハングする
次のように、Excel ファイルへの OLEDB 接続を開くとハングする Windows サービスがあります。
このコードは、コンソール アプリケーションとして実行すると正常に動作します。Visual Studio で Windows サービスをデバッグすると、connection.Open() の呼び出しに到達するまでコードにステップ インできます。その時点で、スレッドはハングします。例外はスローされません。[Break All] または [Stop Debugging] ボタンをクリックするまで、Visual Studio は応答し続けます。その時点で、Visual Studio もハングします。プロセスを強制終了すると、Visual Studio が再び応答するようになります。
なぜこれが起こるのか、それを解決する方法を知っている人はいますか?
編集: fileName は絶対パスです。ファイルはサービス自体によって書き込まれました。
c# - OleDb データベースから DataSet へ、そして c# に戻りますか?
ユーザーに次のことを許可するプログラムを作成しています。
- ユーザーが指定する (任意の) データベースに接続する
- そのデータベース内のすべてのテーブルを個別の DataGridViews で表示する
- プログラムでそれらを編集し、ランダム データを生成し、結果を確認します。
- これらの変更をコミットするか元に戻すかを選択します
そこで私は DataSet クラスを発見しました。これは、データベースが保持できるすべてのものを保持できるように見えます。ここで行う最善の方法は、すべてを 1 つのデータセットにロードし、ユーザーに編集させてからデータセットを保存することであると判断しました。データベースに戻ります。問題は、データベース テーブルをロードする唯一の方法が次のとおりであることです。
データセットがまさにこの目的のために設計されているように見えることを考えると、もっと簡単な方法があるはずです。しかし、本当の問題は、これらのものを保存しようとするときです。OleDbDataAdapter.Update() メソッドを使用するには、有効な INSERT クエリを提供する必要があると言われました。この種のものを私のために処理するクラスを持つことのすべてのポイントを否定していませんか?
とにかく、データベースをデータセットにロードして保存する方法を誰かが説明してくれることを願っています。私はいつでも自分でコマンドを一緒に解析できましたが、それは最善の解決策とは思えません。
c# - リーダーの TableSchema で ADO.Net に System.String DataType のみを強制的に使用させる方法
OleDbConnection を使用して Excel 2007 スプレッドシートをクエリしています。OleDbDataReader が列のデータ型として文字列のみを使用するように強制したい。
システムはデータの最初の 8 行を見て、データ型が Double であると推測します。問題は、行 9 にその列に文字列があり、Double にキャストできなかったため、OleDbDataReader が Null 値を返していることです。
これらの接続文字列を使用しました:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="ExcelFile.xlsx";Persist Security Info=False;Extended Properties="Excel 12.0;IMEX=1;HDR=No"
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="ExcelFile.xlsx";Persist Security Info=False;Extended Properties="Excel 8.0;HDR=いいえ;IMEX=1"
reader.GetSchemaTable().Rows[7].ItemArray[5] を見ると、dataType が Double になっています。
このスキーマの行 7 は、問題が発生している Excel の特定の列と相関しています。ItemArray[5] はその DataType 列です
リーダー用のカスタム TableSchema を作成して、ExcelFiles にアクセスするときに、システムがデータ型を推測するのではなく、すべてのセルをテキストとして扱うことはできますか?
このページで良い情報を見つけました: ADO.NET を使用して Excel スプレッドシートを読み取るためのヒント
ADO.NET インターフェイスの主な特徴は、データ型の処理方法です。(スプレッドシートを読んでいるときに、どのデータ型が返されるかという質問を慎重に避けてきたことに気付くでしょう。) 準備はできていますか? ADO.NET はデータの最初の 8 行をスキャンし、それに基づいて各列のデータ型を推測します。次に、その列のすべてのデータをそのデータ型に強制しようとし、強制が失敗するたびに NULL を返します!
ありがとう、
キース
これが私のコードの縮小版です:
c# - aspx の日付を MS-ACCESS テーブルに更新できません
こんにちは、データ型の更新に問題があります
このようにC#部分に日付を挿入します
しかし、私はこのようにaspx部分を更新します
エラーが出る 条件式のデータ型が一致しません c#部分とaspx-partで入力している型に若干の型の違いがあるようです
誰でもこれで私を助けることができますか?