問題タブ [ado.net]

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 投票する
7 に答える
20301 参照

asp.net - SqlDataSource または ObjectDataSource を使用しているときに接続/データリーダーを閉じる方法

ベータ テスト中に、接続プーリングのエラー メッセージが発見されました。したがって、私はコードを調べて、SqlDataReader オブジェクトが閉じられていない場所はどこでも閉じています。私が知る必要があるのは、SqlDataSource または ObjectDataSource タグの SelectStatement 属性で指定されているデータリーダーを閉じる方法 (または閉じる必要がある場合) です。それらが処理されない場合、接続リークが発生する可能性はありますか?

前もって感謝します !

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

.net - データベースのローカリゼーション - ルックアップ リスト - よりスマートな方法

データベースにいくつかのルックアップ リストを追加しようとしていますが、簡単にローカライズできるようにしたいです (SQL 2005、ADO.NET)。

これには以下が含まれます。

  • 同時に複数の言語を簡単に管理
  • データベースから値を簡単に取得
  • フォールバック言語 (選択した言語がない場合)

多言語のルックアップ リストを格納し (異なる言語で同じ ID を使用)、ID と言語を受け取ることによってルックアップ リストの値を返す関数を使用するテーブルを持つことを考えていました。

落とし穴の 1 つは、ルックアップ リストを使用するすべてのクエリに手動で言語パラメーターを追加する必要があることです。

パラメータを「セッション/グローバル変数」として送信できるようにするソリューション、またはSQLクエリでパラメータを自動的に送信するソリューションと、それ自体を取得する関数(パラメータを自動的にアタッチするためのいずれか)を検討しています、パラメーターを読み取ることができるようにするため)。

解決策は次のようになりますが、クエリにパラメーターを明示的に指定しない限り (疑似コード)、それが異なっていてもかまいません。

説明:

  1. 通常、クエリは次のようになります (lookup 関数を使用することを思い出してください)。

    SELECT .., GetLookupList1(lookup_ID, language), .. FROM TABLE

GetLookupList1 は、ルックアップ テーブルのルックアップ値を取得するユーザー定義関数です。この機能を使用すると、SQL コードが読みやすく、保守しやすくなります。

関数の本体は次のようになります。

  1. 私が望むのは、言語パラメーターを関数からある種の静的変数に削除できるようにすることです。これは、現在の接続/ステートメント/コマンドでのみ使用できるため、クエリは次のようになります

    SELECT .., GetLookupList1(lookup_ID), .. FROM TABLE

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

.net - WCF/ADO.NET Data Service でリクエストボディからパラメータを受け取る

ADO.NET Data Service に投稿しようとしていますが、途中でパラメーターが失われるようです。

私は次のようなものを得ました:

そして、prototype.js を次のように使用して ajax 呼び出しを行います。

"method: 'POST'" を "method: 'GET'" に、"WebInvoke(Method="POST")" を "WebGet" に置き換えると、すべてが機能しますが、(post を使用して) 得られるのは次のとおりです。

不正なリクエスト - クエリ構文のエラー。

サービスから。

唯一の修正 (使用したくない) は、投稿を実行する場合でも、URL 内のすべてのパラメーターを送信することです。どんなアイデアでも大歓迎です。

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

vb.net - ADO.NET Data Services Query Interceptor - この C# の VB 構文を教えてもらえますか?

私は VB.NET を初めて使用します。次のコード スニペットのメソッドのシグネチャを変換するのに苦労しています。Expression<...>> ビット。

前もって感謝します。

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

c# - OdbcCommand.ExecuteScalar()がAccessViolationExceptionをスローするのはなぜですか?

データベーステーブルからテキストの説明を取得してテキストファイルに保存することを目的としたコードブロックがあります。次のようになります(C#.NET):

このコードは、データの一部を.txtファイルに正常に保存しましたが、多くの行で、AccessViolationExceptionが次の行にスローされます。

例外テキストは「保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています」です。

プログラムは通常、テーブルの同じ行に例外をスローしますが、100%一貫しているようには見えません。過去に例外をスローしたデータが突然機能する場合があります。

getItemsCommandでID、ITEMDESCRIPTION FROM ITEMSを選択して、2番目のクエリをスキップしなかった理由を疑問に思う人もいるでしょう。実際、最初はそのようにしましたが、getItemsCommand.GetString()で同じエラーが発生していました。データセットが大量のメモリを使用している可能性があり、それがエラーの原因である可能性があります。そこで、この方法を試して、役立つかどうかを確認することにしました。そうではありませんでした。なぜこれが起こっているのか誰かが知っていますか?

ちなみに、IDはINTで、ITEMDESCRIPTIONはVARCHAR(32000)列です。違いがある場合、データベースはBorland Interbase 6.0(Ick!)です。

編集:例外がスローされた場所を説明するときに間違った行を指定しました!! ARGH !! 修正されました。また、私はこれまでに提案されたものを試しましたが、それらは役に立ちませんでした。ただし、データベース内の非常に古いレコードのみがこのエラーの原因であることがわかりました。これは奇妙なことです。過去5年間に挿入されたレコードのみをプルするようにクエリを変更しても、問題はありません。誰かが私にこれはエンコーディング変換の問題かそのようなものかもしれないと提案しましたか?

更新:解決しました。この問題は、信頼性の低いデータベースソフトウェアのODBCドライバーのバグであることが判明しました。他のドライバーとの回避策で問題が修正されました。

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

search - パラメータを使用してLike演算子を使用してSQLクエリでSQLインジェクションを回避しますか?

前任者からいくつかのコードを引き継いで、Like 演算子を使用するクエリを見つけました。

SQL インジェクションの問題を回避してこれをパラメータ化しようとしていますが、これがどのように達成されるかはよくわかりません。助言がありますか ?

注意してください、従来の ADO.NET のソリューションが必要です。このコードを LINQ のようなものに切り替えることはできません。

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

database - DataSet を使用して、あるデータベースから別のデータベースにデータを転送するにはどうすればよいですか?

いつものように、最初にいくつかの背景情報を示します。

データベース A (Access データベース) - 2 つの列だけから必要な情報を含むテーブルを保持します。これら 2 つの列からの情報は、データベース A にアクセスできないユーザーが使用するアプリケーションに必要です。

データベース B (Access データベース) - 2 つの列のみを含むテーブルを保持します (テーブル A から必要なものへのミラー)。データベース B には、アプリケーションのすべてのユーザーがアクセスできます。1 つの問題は、列名の 1 つがデータベース A のテーブルと同じではないことです。

私がしなければならないことは、たとえば週に 1 回、自動的に実行されるユーティリティを介して必要なデータを転送することです (2 つのデータベースは完全に同期している必要はなく、単に閉じるだけです)。転送ユーティリティは、(明らかに) 両方のデータベースにアクセスできるユーザー アカウントから実行されます。

これが私が取ったアプローチです(より良い方法がある場合は、提案してください):

  1. データベース A からデータを取得します。これは、必要なテーブルの 2 つの列だけです。

  2. DataReader オブジェクトと WriterStream オブジェクトを使用して、データを [tablename].txt ファイルに書き出します。これを行ったので、schema.ini ファイルを使用して、データ列がデータベース B にあるものと同じ名前になるように強制できます。

  3. データベース B のテーブルをミラーリングする DataTable を含む DataSet オブジェクトを作成します。

  4. Microsoft.Jet.OLEDB.4.0 プロバイダーを使用して、テキストの拡張プロパティ hdr=yes および fmt=delimited を使用して、.txt ファイルから DataTable に情報を吸い込みます (schema.ini ファイルのセットアップ方法と .txtファイルのセットアップ)。DataAdapter を使用して DataTable を埋めています。

  5. データベース B のテーブルをミラーリングする DataTable を含む別の DataSet オブジェクトを作成します。

  6. データベース B からの情報を吸い込み、データベース A から更新する必要がある、テーブル内にある現在のデータがすべて含まれるようにします。ここでも、DataAdapter を使用してこの DataTable に入力しています (ステップ 5 とは別のものです。どちらも異なるデータ ソースを使用しています)。

  7. データベース A (技術的には .txt ファイル) からのデータを保持する DataTable をマージします。

  8. 変更内容でデータベース B のテーブルを更新します。

データベース B との通信を担当する DataAdapter の更新、削除、および挿入コマンドを手動で作成しました。ただし、DataSet-From-Database-B.Merge(Dataset-From-TxtFile[tableName] ) HasChanges フラグを反転しません。これは、DataSet-From-Database-B.Update がコマンドを起動しないことを意味します。

DataSet-From-TxtFile からデータを取得して、私が使用している方法を使用してデータベース B にマージして適用する方法はありますか? ここで重要なステップを見逃していますか?

データベース B のテーブルからすべてのレコードをいつでも削除してから、テキスト ファイルからすべてのレコードを挿入できることはわかっています (DataSet 内の各レコードをループして、row.SetAdded を適用して HasChanges フラグを確実にトリガーする必要がある場合でも)。 、しかし、毎回変更のみを適用したいと思います。

私は c# と 2.0 Framework を使用しています (これは、1 つのテーブルしか扱っていないため、DataSet と DataAdapter の代わりに DataTable と TableAdapter を使用できることを意味します)。

ティア

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

.net - rhino-mocks - 良いサンプルアプリ

rhino-mock のチュートリアルについていくつか質問があったことは知っています。しかし、ado.net を使用した n 層ビジネス アプリケーションのコンテキストで rhino-mocks を使用するサンプル アプリが世の中にあるのではないかと考えています。

チュートは良いと思いますが、全体像にすべてをまとめているようには見えません. そこで、全体像をまとめたサンプルアプリを探しています。

また、データ アクセス層のロジックのモックとテストを具体的に扱う例が少し不足していると思います。

乾杯アンソニー

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

asp.net - MS Access DB に対してこの asp.net ページをセットアップする最も簡単な方法。.

3 つのテーブルを持つアクセス データベースがあります。

  • 人々
  • ギフト
  • ピープルギフト

VS 2008 を使用して、これらのテーブルに対してクエリを実行し、基本的な挿入を実行できるページを起動して実行する最も簡単な方法は何ですか。

ユーザーが人をクリックしてギフトをクリックし、「追加」をクリックできるように、コンボボックスをテーブルのフィールドにバインドしたいと考えています。

0 投票する
9 に答える
265618 参照

visual-studio - Microsoft.ACE.OLEDB.12.0プロバイダーが登録されていません

2つのプロジェクト(Word-Templateプロジェクトとテスト用のVB.Netコンソールアプリケーション)を備えたVisualStudio2008ソリューションがあります。どちらのプロジェクトも、MS-Access 2007データベースファイルへの接続を開き、System.Data.OleDbへの参照を持つデータベースプロジェクトを参照します。データベースプロジェクトには、次のようにデータテーブルを取得する関数があります。

Word 2007テンプレートプロジェクトからこの関数を呼び出すと、すべてが正常に機能します。エラーはありません。しかし、コンソールアプリケーションから実行すると、次の例外がスローされます

ex ={"'Microsoft.ACE.OLEDB.12.0'プロバイダーはローカルマシンに登録されていません。"}

両方のプロジェクトの参照は同じで、コンソールアプリケーションは最初に作成したとき(しばらく前)は機能していましたが、現在は機能していません。私は何かが足りないに違いないが、何がわからない。何か案は?