問題タブ [sqldataadapter]

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

.net - SqlDataAdapter と DataTable を使用してデータベース テーブルに新しい列を挿入するにはどうすればよいですか?

私の .NET プログラムで、新しい列を挿入してデータベース テーブルの構造を変更したいと考えています。しかし、ADO.NET でデータベースに対して "ALTER TABLE ....." コマンドを実行してそれを実行したくありません。データテーブルに新しい列を追加してそれを行いたいです。したがって、関連する tableAdapter を更新すると、物理テーブル構造が変更されます。

私が動作すると予想したコードは次のようなものでした:

しかし、そうではありませんでした。

何らかの方法で可能である場合、どうすればそれを行うことができますか?

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

.net - SQLDataAdapter を使用した動的な列名でのクエリ

クエリ文字列に基づいて SQLDataAdapter のクエリを動的に変更しようとしています。パラメータとして渡そうとしましたが、うまくいきません。他の提案はありますか?

今私は持っています:

しかし、エラーが発生します:System.Data.SqlClient.SqlException: Invalid column name '@Category'.

これはこれを行う正しい方法ではないからだと思います。これどうやってするの?クエリ文字列を介して列名を取得できます。その列名をクエリに渡して、列として認識させたいです。

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

asp.net - DataTable は常に空の値を返します

私は .NET 初心者で、ストアド プロシージャを実行して DataTable を返す関数を作成する必要があります。

私の SqlConnection は既に初期化されており、デバッガーでの実行中に DataAdapter が値を返すのを見ることができますが、私の DataTable は空です。

助けてください。

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

.net - .net SqlDataAdapterでのみ単純なクエリのタイムアウト

わかりましたので、Sql Management Studio 内で実行するのに 2 ~ 5 秒かかるこのクエリがあります。しかし、.net アプリケーションを介して実行すると、毎回 5 分の CommandTimeout を超えます。

この同じコード (以下) が他のクエリを正常に実行し、結果を提供しているため、.net コードが機能することはわかっています。

以下はクエリですが、テーブルの名前が変更されています。

助けてください。この 1 つのクエリに問題がある理由がまったくわかりません。

更新(古い、以下が興味深いときに見つかりました。問題の原因ではありません) そこで、クエリを探してトレースを実行しました。クエリを手動で実行すると表示されましたが、コードを実行すると、そうではありませんでしたまったく表示されず、同じエラーメッセージが表示されました。そこで接続文字列をよく見てみると、何かおかしいことに気づきました。ユーザー名とパスワードが渡されたときに、SqlConnection オブジェクトの ConnectionString プロパティにパスワードがありませんでした。それが解決策を示しているかどうかはわかりませんが、今は非常に混乱しています。

更新 #2トレースを十分長く実行させませんでした。超ロングのコールを捉えることができました。

この正確なクエリを実行すると、同じ結果が得られます (実際には完了します。クエリを直接実行するのに 3 秒かかるのではなく、このメソッドを使用して実行すると 5 分以上かかります)。nvarchar(4000) として指定されたパラメーターを使用してクエリを実行しようとしたことにも注意してください。ただし、Sql 管理スタジオでクエリを実行するだけで問題なく動作します。

更新 #3 クエリ内で結合されているすべてのテーブルの統計を更新しましたが、うまくいきません。sp_executeSQL クエリにはまだ 5 分近くかかります (統計の再構築前よりも約 30 秒短縮されています)。この時点で、私は途方に暮れています。何か案は?

更新 #4がついに解決策を見つけました! この問題は、結果生成クエリの前に if 条件を使用していた「パラメータ スニッフィング」が原因でした。実行計画エンジンは、パラメーターが null として渡されると、クエリが null としてヒットすると想定していましたが、そうではありませんでした。それらには常に値があります。この問題を解決するために、クエリの先頭にある if 条件を削除し、パラメーターが使用された場所に ISNULL チェックを配置しました。これにより、私の意図が実行計画に通知され、sp_executeSQL 呼び出しは、Sql Management Studio の実行と同じ速度で実行されました。ご協力ありがとうございました!

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

c# - " ReadOnlyException DataTable DataRow "列 X は読み取り専用です。"

最初にSqlDataAdapterオブジェクトを何度も作成した短いコードがあります。

呼び出しを少し合理化しようとして、SqlDataAdapterSqlCommandに置き換え、 SqlConnectionをループの外に移動しました。

今、DataTableに返されたデータの行を編集しようとすると、以前にスローされなかったReadOnlyExceptionがスローされます。

注: ID に基づいて従業員の氏名を取得するカスタム関数があります。ここでは簡単にするために、以下のコード例で「John Doe」を使用して要点を示しました。

ExampleQueryOldはSqlDataAdapterで動作します。ExampleQueryNewは、 DataRowの要素に書き込もうとするたびにReadOnlyExceptionで失敗します。

  • ExampleQueryOld

これは機能し、問題はありません。

  • ExampleQueryNew

この例では、ReadOnlyException がスローされます。

DataRow要素に書き込める場合と書き込めない場合があるのはなぜですか?

SqlConnectionがまだ開いているためですか、それともSqlDataAdapterが舞台裏で何かを行っているためですか?

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

c# - SqlDataAdapter を使用した行のカウント

コードに問題があります。SqlDataAdapter行がある場合は、行数を取得したいと思います。

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

insert - DataAdapter を使用して DataTable を DB に挿入しても機能しない

DataAdapter を使用して、DataTable を DB テーブル (DB はモバイル デバイス上にあります - Psion) に挿入しようとしています。何らかの理由で機能しません-DBテーブルを確認すると、単に空のテーブルとして表示されます...

コード: >

private void btnCommTables_Click(object sender, EventArgs e)
{
try
{
DataSet ds = WSDanielGroup.Instance._WSDanielGroupToDevice.GetLoadTables();

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

sql-server - SqlDataAdapter を使用して DataGridView から更新する

SQL Server データベースのデータを表示する DataGridView があります。ユーザーはデータを編集してデータベースに保存することができます。

データがデータベースに保存される方法は、次のようなものです。

これは、通常のテーブルに保存するときにうまく機能します。ただし、挿入、更新、および削除時に起動する INSTEAD OF トリガーを持つビューにも保存したいと考えています。このビューで上記を使用しようとすると、エラーが発生します。

UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してはサポートされていません。

このビューに保存するにはどうすればよいですか? トリガーを起動したいので、基になるテーブルに直接保存したくありません。

ありがとう!

編集: InsertCommand と UpdateCommand を手動で生成しようとしましたが、同じエラーが発生しました。

EDIT 2:手動でコマンドを生成したときに、コマンドが間違っていることがわかりました。正常に機能することを修正したら、ビューが更新され、トリガーが期待どおりに起動します。SqlCommandBuilder を使用してビューのコマンドを自動生成することはできないと思います。

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

c# - なぜ両方のSqlDataAdaptorがTableを2回指定する必要があるのですか?

でクエリを実行しようとしFillています。私が理解していないのは、クエリするテーブルをすでに指定しているのに、なぜテーブル名を具体的に指定する必要があるのか​​ということです。DataSetSqlDataAdaptorFillSqlDataAdapter

以下のコードを参照してください。クエリ文字列にはすでに「FooTable」が含まれていますが、SqlDataAdapter.Fillに「FooTable」が再度必要なのはなぜですか。

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

asp.net - DataSet が GridView に値を設定しないのはなぜですか

同じクエリで sqldatasource を使用すると、グリッドビューにデータが表示されない理由がわかりません。