問題タブ [dataadapter]

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

c# - 1 つのクエリで複数の SQL 選択を行った結果のテーブル名を定義する

たとえば、次のクエリを実行するとします。

DB アダプター (C#) で実行すると、2 つのテーブルを持つデータセットが得られます。SQL で結果テーブルの名前を定義するにはどうすればよいですか?

これはSQL内でのみ実行できます。C# コードにアクセスできません。

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

c# - DataAdapter .Update を使用してデータセットに行を挿入/更新する (DB PK に基づいていない) 問題

共通キーに基づいて複数のテーブルからデータセットにデータを読み込むバッチ プロセスがあります。次に、同じキーでクエリを実行する宛先データの 2 つ目のデータセットを作成します。

この時点で、(テーブル/列レイアウトの観点から) 構造的に同一の 2 つのデータセットがあります。次に、ソースに存在する行を宛先データセットに追加するプロセスがあります。さらに、プロセスは共通キーに基づいて特定の列の更新も試みます。

更新する必要がある既存の行で DataAdapter.UPDATE コマンドが呼び出されると、問題が発生するようです。エラー: System.InvalidOperationException は処理されませんでした Message="SELECT ステートメントで指定されたテーブルに一意のキー列または識別子列が含まれていないか、SELECT ステートメントにすべてのキー列が含まれていません。"

宛先 DB の PK を制御する方法がないため、この特定の更新のキーが何であるかをアダプタに伝える方法はありますか? データセット内の各 DataTable の主キーを「カスタム」に設定しました。

これは非ユーザー インターフェイスのバッチ プロセスであり、そのパフォーマンス要件は非常に低くなります。(データセットの使用方法などを説明するため)

何かご意見は?

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

c# - DataAdapter を使用したバッチ更新

すべて実行する必要がある一連の SQL Update コマンドがある状況があります。DataSet がバッチ更新を実行できることは知っていますが、それを達成できた唯一の方法は、最初にテーブル全体をデータセットにロードすることです。テーブル内のレコードのサブセットのみを更新したい場合はどうすればよいですか?

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

.net - データテーブルにデータを入力するとき、データリーダーはデータセットよりも高速ですか?

どちらが速いでしょう。

1)データリーダーをループし、入力されたデータテーブルに基づいてカスタムの行と列を作成する

2)または、dataAdapterオブジェクトを作成し、データテーブルを(.Fill)だけ入力します。

データテーブルを動的に作成しても、データリーダーのパフォーマンスは維持されますか?

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

design-patterns - DataAdapter はファサード パターンまたはアダプター パターンを使用しますか。

、オブジェクトのメソッドを見るUpdate()と、Facade Pattern を使っているのかといつも思います。Fill()DataAdapterDataAdapter

舞台裏でオブジェクトを作成しCommandConnectionオブジェクトを実行してくれるようです。

または、オブジェクトと接続オブジェクトDataAdapterの間のアダプタなので、Adapter Pattern を使用しますか?DatasetCommand

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

c# - C# の問題: .MDB ファイルを読み込んで変更を加え、元のファイルに変更を保存する最も簡単な方法は何ですか?

私が取り組んでいる私のプロジェクトはほぼ終了しました。.MDB ファイルを読み込んで、DataGrid にコンテンツを表示し、DataGrid でこれらの変更を取得して .MDB ファイルに保存しようとしています。また、ある .MDB ファイルからテーブルを取得して別の .MDB ファイルに保存できる関数も作成します。もちろん、変更を .MDB ファイルに保存する方法がわからない場合は、これを行うことはできません。

Google を広範囲に調査しましたが、私の質問に対する回答はありません。私は自分自身をこの特定のトピックの初心者だと考えているので、答えを複雑にしすぎないでください - .MDB ファイルを編集する最も簡単な方法が必要です! プログラミング例を教えてください。

  1. 既に DataGrid への接続を確立しているとします。Datagrid によって行われた変更を取得するにはどうすればよいですか? これは答えるのに十分簡単だと確信しています。
  2. 次に、このデータテーブルを取得し、元のデータセットに挿入し、そのデータセットを取得して .MDB ファイルを書き換える方法を知る必要があります。(変更されたテーブルのみを挿入する方法があれば、それをお勧めします。)

事前に感謝します。さらに情報が必要な場合はお知らせください。これはおそらく、このトピックについて私が尋ねなければならない最後のことです...神に感謝します.

編集:

私が使用している .mdb は、Microsoft Access データベースです。(複数の .mdb ファイルがあることさえ知りませんでした)

streamwriter などを使用して .MDB ファイルに直接書き込めないことはわかっていますが、DataSet 情報が既に含まれている .MDB ファイルを生成する方法はありますか? または、既に DataGrid にロードした .MDB ファイルにテーブルを追加する方法があります。方法があるはずです!

繰り返しますが、C# でプログラム的にこれを行う方法が必要です。

編集:

私のプロジェクトはかなり大きいですが、別のクラス ファイルを使用してすべてのデータベース接続を処理しています。私のデザインとソースが本当にずさんであることはわかっていますが、それで仕事は完了します。私は、インターネットで見つけた例と同じくらい上手です。

ここでは、別の形式で DataGrid に接続しているだけであることを思い出してください。Datagrid フォームから私のコードが必要な場合はお知らせください (ただし、なぜそれが必要なのかはわかりません)。DatabaseHandling.cs は、2 つの .MDB ファイルを処理します。そのため、そこに 2 つのデータセットが表示されます。最終的にこれを使用して、あるデータセットからテーブルを取得し、それらを別のデータセットに配置します。これらの値を .MDB ファイルに保存する方法を理解する必要があります。

とにかくこれを行うことはありますか?方法があるはずです...

編集:

私が調査して読んだことから...答えは私の目の前にあると思います。「Update()」コマンドを使用します。これは、実際にはこれを行う簡単な方法があることを再確認していますが、この更新コマンドの使用方法がまったくわからないという問題が残っています。

おそらく、次のように設定できます。

それはできると思いますが、手動で何かを挿入したくありません。代わりにこれらの両方を実行したい:

  • Datagrid で変更された情報を取得し、取得元の Access データベース ファイル (.mdb) を更新します。
  • 別の Access データベース ファイル (.mdb) からテーブルを取得し、それらをセカンダリ Access データベース ファイル (.mdb) に置き換えることができる関数を作成します。どちらのファイルもまったく同じ構造を使用しますが、異なる情報が含まれています。

誰かがこれに対する答えを出してくれることを願っています...私のプロジェクトは完了しました。待っているのは1つの簡単な答えだけです。

よろしくお願いします。

編集:

わかりました...良いニュースです。.mdb ファイル自体を照会する方法を理解しました (と思います)。使用しようとしているSQLコマンドが原因で実行時エラーが発生するため、機能しないコードを次に示します。それは私の次の質問に私を連れて行きます。

DatabaseHandling.cs に追加された新しい関数コード:

ご覧のとおり、実際に接続自体でクエリを実行することができました。これは、実際の Access .MDB ファイルであると思われます。私が言ったように、ファイルに対して実行した SQL クエリは機能せず、使用すると実行時エラーが発生しました。

私が実行しようとしているコマンドは、.MDB ファイルからテーブルを取得し、別の .MDB ファイルの同じタイプのテーブルを上書きすることになっています。上記で試みた SQL コマンドは、.mdb ファイルからテーブルを直接取得し、別のファイルに直接配置しようとしましたが、これは私がやりたいことではありません。.MDB ファイルからすべての情報を取得したい - テーブルを Datatable に入れ、すべての Datatables を Dataset に追加します (これを行いました)。これを 2 つの .MDB ファイルに対して行います。2 つのデータセットを取得したら、各データセットから特定のテーブルを取り出し、次のように各ファイルに追加します。

  • DataSetA >>>>----- [テーブル追加(上書き)] ----->>>> DataSetB
  • DataSetB >>>>----- [テーブルを追加 (上書き)] ----->>>> DataSetA

これらの各データセットを取得し、元の各 Access .MDB ファイルに戻します。基本的に両方のデータベースの同期を維持します。

だから私の質問は、改訂されたものです:

  1. 同じ名前の既存のテーブルを上書きして .MDB ファイルにテーブルを追加する SQL クエリを作成するにはどうすればよいですか。クエリは、変数を追加したいテーブル名に置き換える配列を使用して、実行時に動的に作成できる必要があります。
  2. Datagrid によって DataTable に加えられた変更を取得し、それらを DataTable (または DataSet) に戻して、.MDB ファイルに送信できるようにするにはどうすればよいですか?

私は自分の問題をうまく説明していないと思うので、できる限り詳しく説明しようとしました。さて、この質問はあまりにも長くなりすぎました。これをもっとうまく説明できればいいのにと思います。:[

編集:

以下のユーザーのおかげで、私はほぼ修正を見つけたと思います - キーワードほぼ. 以下は、更新された DatabaseHandling.cs コードです。「データ型が一致しません」という実行時エラーが発生します。これらのテーブルをまったく同じセットアップで別のデータベースにコピーしようとしていることを考えると、それがどのように可能になるかわかりません。

このエラーが発生するのはなぜですか? 両方のテーブルはまったく同じです。私は何を間違っていますか?最悪の場合、まったく同じ構造のテーブルを別の値で挿入する前に、別の Access .MDB ファイルのテーブルを削除するにはどうすればよいですか?

男私はこれを理解できたらいいのに...

編集:

よし、だいぶ離れた。私の質問は新しいものに変化したため、個別に質問する価値があります。開いた接続に対して直接クエリを実行する方法がわかったので、質問に答えてもらいました。皆さん、ありがとうございました!

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

strongly-typed-dataset - 型指定されたデータセットに対する DataAdapters = SQL スキーマの悪夢

私は、TableAdapter は弱くて愚かであり、実際の開発者は DataAdapter を使用するだろうという多くの参考文献を見てきました。それが本当かどうかはわかりませんが、私はこの問題を調査しており、この「型指定されたデータセットに対する DataAdapter/TableAdapter」全体の臭いについて強調しています。

説明してみましょう...

Typed DataSet が xsd ファイルに定義されているとします。これで、そのスキーマに対してコードで DataAdapter を作成する準備が整いました... (ちなみに、OleDb を使用して、フォルダー...ここで呼び出すSQLサーバーストアドプロシージャはありません。単純な古い生のテーブルだけで、アクションの準備ができています。)

これまでの調査から、DataAdapter を Typed DataSet と組み合わせて使用​​する方法を以下に示します。私が間違っているかどうか教えてください。(そして、最後に大きな不満/質問があります。)

そういうことですか?それはうまくいくので、それは良いことです。実際、強く型付けされた動作は素晴らしいものです。

さて、私の不満.... xsd のテーブルのスキーマと一致するように、DAL メソッド (GetJobsByCustomer) で同じ exaxt SQL 構文を維持しなければならないということですか? 手作業でコーディングした SQL と xsd スキーマの間で、これほど多くのメンテナンスと分離が行われるのは気が狂っています。テキスト文字列を書いているので、エラーはまったくありません!! 動作するかどうかは、実行時に確認できます。

すべての SQL をコードで入力するとき、コード化された SQL を xsd テーブル スキーマと同期させておくために前後を調べなければならないのはひどいことです。

確かに私は何かが欠けています。

なんて茶番。型指定されたデータセットは、スキーマから生成されるため、優れた IntelliSense などで動作しますが、結局のところ、型指定されたスキーマに一致する SQL を記述するのは面倒です。彼らがしたことは、頭痛を新しい領域に移しただけです。

これをより良くする何かが欠けていると教えてください。

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

c# - DataAdapter ベース テーブル スキーマから文字列を選択しますか?

.xsd を作成したとき、テーブルごとに列を選択する必要があり、テーブルのスキーマが作成されましたよね? では、その Select 文字列を取得して、データアダプタの新しいインスタンスの基本 Select コマンドとして使用し、必要に応じて Where 句と OrderBy 句を追加するにはどうすればよいでしょうか?

これにより、(同じテーブルの) 各 DataAdapter のフィールド リストを .xsd ファイル内のそのテーブルのスキーマと同期させる必要がなくなります。

特定のテーブル スキーマで動作する複数の DataAdapter があり、Where 句と OrderBy 句のパラメーターが異なることはよくあることではありませんか? 確かに、すべて同じテーブル スキーマで動作する半ダースの DataAdapter の Select 文字列のフィールド リスト部分を維持する (または冗長に構築する) 必要はありません。

私はこの擬似コードのようなものを想定しています:

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

vb.net - アダプターの更新

私はadapter.insertとadapter.deleteを作成し、両方ともうまく機能しますが、adapter.deleteでは動作しません

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Button2.Click を処理します usersAdp.Fill(userstable) usersAdp.Update(txtid.Text, Me.txtname.Text, Me.txtemail.Text, Me.txtpassword. Text, Me.txtconfirm.Text, Me.txtcode.Text, Me.CheckBox1.Checked = True) Me.GridView1.DataSource = userstable Me.GridView1.DataBind() End Sub