問題タブ [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.
.net - SqlDataAdapter と DataTable を使用してデータベース テーブルに新しい列を挿入するにはどうすればよいですか?
私の .NET プログラムで、新しい列を挿入してデータベース テーブルの構造を変更したいと考えています。しかし、ADO.NET でデータベースに対して "ALTER TABLE ....." コマンドを実行してそれを実行したくありません。データテーブルに新しい列を追加してそれを行いたいです。したがって、関連する tableAdapter を更新すると、物理テーブル構造が変更されます。
私が動作すると予想したコードは次のようなものでした:
しかし、そうではありませんでした。
何らかの方法で可能である場合、どうすればそれを行うことができますか?
.net - SQLDataAdapter を使用した動的な列名でのクエリ
クエリ文字列に基づいて SQLDataAdapter のクエリを動的に変更しようとしています。パラメータとして渡そうとしましたが、うまくいきません。他の提案はありますか?
今私は持っています:
しかし、エラーが発生します:System.Data.SqlClient.SqlException: Invalid column name '@Category'.
これはこれを行う正しい方法ではないからだと思います。これどうやってするの?クエリ文字列を介して列名を取得できます。その列名をクエリに渡して、列として認識させたいです。
asp.net - DataTable は常に空の値を返します
私は .NET 初心者で、ストアド プロシージャを実行して DataTable を返す関数を作成する必要があります。
私の SqlConnection は既に初期化されており、デバッガーでの実行中に DataAdapter が値を返すのを見ることができますが、私の DataTable は空です。
助けてください。
.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 の実行と同じ速度で実行されました。ご協力ありがとうございました!
c# - " ReadOnlyException DataTable DataRow "列 X は読み取り専用です。"
最初にSqlDataAdapterオブジェクトを何度も作成した短いコードがあります。
呼び出しを少し合理化しようとして、SqlDataAdapterをSqlCommandに置き換え、 SqlConnectionをループの外に移動しました。
今、DataTableに返されたデータの行を編集しようとすると、以前にスローされなかったReadOnlyExceptionがスローされます。
注: ID に基づいて従業員の氏名を取得するカスタム関数があります。ここでは簡単にするために、以下のコード例で「John Doe」を使用して要点を示しました。
ExampleQueryOldはSqlDataAdapterで動作します。ExampleQueryNewは、 DataRowの要素に書き込もうとするたびにReadOnlyExceptionで失敗します。
- ExampleQueryOld
これは機能し、問題はありません。
- ExampleQueryNew
この例では、ReadOnlyException がスローされます。
DataRow要素に書き込める場合と書き込めない場合があるのはなぜですか?
SqlConnectionがまだ開いているためですか、それともSqlDataAdapterが舞台裏で何かを行っているためですか?
c# - SqlDataAdapter を使用した行のカウント
コードに問題があります。SqlDataAdapter
行がある場合は、行数を取得したいと思います。
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();
sql-server - SqlDataAdapter を使用して DataGridView から更新する
SQL Server データベースのデータを表示する DataGridView があります。ユーザーはデータを編集してデータベースに保存することができます。
データがデータベースに保存される方法は、次のようなものです。
これは、通常のテーブルに保存するときにうまく機能します。ただし、挿入、更新、および削除時に起動する INSTEAD OF トリガーを持つビューにも保存したいと考えています。このビューで上記を使用しようとすると、エラーが発生します。
UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してはサポートされていません。
このビューに保存するにはどうすればよいですか? トリガーを起動したいので、基になるテーブルに直接保存したくありません。
ありがとう!
編集: InsertCommand と UpdateCommand を手動で生成しようとしましたが、同じエラーが発生しました。
EDIT 2:手動でコマンドを生成したときに、コマンドが間違っていることがわかりました。正常に機能することを修正したら、ビューが更新され、トリガーが期待どおりに起動します。SqlCommandBuilder を使用してビューのコマンドを自動生成することはできないと思います。
c# - なぜ両方のSqlDataAdaptorがTableを2回指定する必要があるのですか?
でクエリを実行しようとしFill
ています。私が理解していないのは、クエリするテーブルをすでに指定しているのに、なぜテーブル名を具体的に指定する必要があるのかということです。DataSet
SqlDataAdaptor
Fill
SqlDataAdapter
以下のコードを参照してください。クエリ文字列にはすでに「FooTable」が含まれていますが、SqlDataAdapter.Fillに「FooTable」が再度必要なのはなぜですか。
asp.net - DataSet が GridView に値を設定しないのはなぜですか
同じクエリで sqldatasource を使用すると、グリッドビューにデータが表示されない理由がわかりません。