タグ付けされた質問 「ado.net」

ADO.Netは、リレーショナルデータベースシステムに格納されたデータにアクセスして変更するためにプログラマーによって一般的に使用されますが、非リレーショナルソースのデータにアクセスすることもできます。これは、Microsoft .NET Frameworkに含まれている基本クラスライブラリの一部です。

4
SqlDataReaderを手動で閉じて破棄する必要がありますか?
私はここでレガシーコードを扱っていますがSqlDataReader、閉じられたり破棄されたりすることのないインスタンスがたくさんあります。接続は閉じられていますが、リーダーを手動で管理する必要があるかどうかはわかりません。 これによりパフォーマンスが低下する可能性はありますか?
90 c#  sql  .net  ado.net 

4
AddWithValueパラメーターがNULLの場合の例外
SQLクエリのパラメータを指定するための次のコードがあります。Code 1;を使用すると、次の例外が発生します。しかし、私が使用すると正常に動作しますCode 2。ではCode 2、私たちはnullのチェック、ひいては持つif..elseブロックを。 例外: パラメータ化されたクエリ '(@application_ex_id nvarchar(4000))SELECT E.application_ex_id A'は、指定されていないパラメータ '@application_ex_id'を予期しています。 コード1: command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID); コード2: if (logSearch.LogID != null) { command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID); } else { command.Parameters.AddWithValue("@application_ex_id", DBNull.Value ); } 質問 コード1のlogSearch.LogID値からNULLを取得できない(ただしDBNullを受け入れることができる)理由を説明してください。 これを処理するためのより良いコードはありますか? 参照: SqlParameterにnullを割り当てます 返されるデータ型は、テーブルのデータによって異なります データベースsmallintからC#nullableintへの変換エラー DBNullのポイントは何ですか? コード public Collection<Log> GetLogs(LogSearch logSearch) { Collection<Log> logs = new Collection<Log>(); using (SqlConnection …
89 c#  .net  ado.net 

7
SqlConnectionStringBuilderを使用して接続文字列からデータベース名を取得する方法
文字列操作を使用して接続文字列を分割し、サーバー、データベース、UID、およびパスワードを取得したくありません。 私は次のリンクを読んで承認された回答を読みました。これが接続文字列からユーザーIDとパスワードを取得する最良の方法ですが、データベース名はどうですか? 接続文字列からユーザー名とパスワードを取得する正しい方法は? SqlConnectionStringBuilderを使用して接続文字列からデータベース名を取得する方法。(DataSourceはサーバー名ですか?)
87 c#  asp.net  sql  ado.net 



10
SqlParameterはすでに別のSqlParameterCollectionに含まれています-using(){}はごまかしますか?
using() {}以下に示すように(sic)ブロックを使用し、それcmd1が最初のusing() {}ブロックの範囲を超えて存在しないと仮定しているときに、2番目のブロックがメッセージとともに例外をスローする必要があるのはなぜですか SqlParameterは、別のSqlParameterCollectionにすでに含まれています ブロックの最後で破棄されたときに、SqlParameterCollectionアタッチされcmd1ているリソースやハンドル(パラメーター()を含む)が解放されないことを意味しますか? using (var conn = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True")) { var parameters = new SqlParameter[] { new SqlParameter("@ProductId", SqlDbType.Int ) }; using(var cmd1 = new SqlCommand("SELECT ProductName FROM Products WHERE ProductId = @ProductId")) { foreach (var parameter in parameters) { cmd1.Parameters.Add(parameter); } // cmd1.Parameters.Clear(); // …
85 c#  .net  sql-server  ado.net 

9
戻り値を使用してストアドプロシージャを呼び出す
Наэтотвопросестьответынаスタックオーバーフローнарусском:Какпривызовехранимойпроцедурыполучитьзначениепереданное в RETURN C#Windowsアプリケーションからストアドプロシージャを呼び出そうとしています。ストアドプロシージャはSQLServer 2008のローカルインスタンスで実行されています。ストアドプロシージャを呼び出すことはできますが、ストアドプロシージャから値を取得することはできません。このストアドプロシージャは、シーケンス内の次の番号を返すことになっています。私はオンラインで調査を行い、私が見たすべてのサイトはこのソリューションが機能していることを示しています。 ストアドプロシージャコード: ALTER procedure [dbo].[usp_GetNewSeqVal] @SeqName nvarchar(255) as begin declare @NewSeqVal int set NOCOUNT ON update AllSequences set @NewSeqVal = CurrVal = CurrVal+Incr where SeqName = @SeqName if @@rowcount = 0 begin print 'Sequence does not exist' return end return @NewSeqVal end ストアドプロシージャを呼び出すコード: SqlConnection conn = …

4
デバッグ中にDataTableを表示する方法
ADO.NETとDataSetsおよびDataTablesの使用を始めたばかりです。私が抱えている問題の1つは、デバッグしようとしたときにデータテーブルにどの値があるかを判断するのがかなり難しいように思われることです。 DataTableに保存されている値をすばやく確認する最も簡単な方法は何ですか?デバッグ中にVisualStudioでコンテンツを表示する方法はありますか、それともデータをファイルに書き出す唯一のオプションですか? DataTableをCSVファイルに書き出す小さなユーティリティ関数を作成しました。それでも、作成された結果のCSVファイルは切り捨てられました。System.Guidを書き出す途中の最後の行から約3行で、ファイルが停止します。これが私のCSV変換方法の問題なのか、それともDataTableの元の母集団の問題なのかわかりません。 更新 ストリームライターをフラッシュするのを忘れた最後の部分を忘れてください。

6
データが存在しない場合の無効な読み取り試行
private void button1_Click(object sender, EventArgs e) { string name; name = textBox5.Text; SqlConnection con10 = new SqlConnection("con strn"); SqlCommand cmd10 = new SqlCommand("select * from sumant where username=@name"); cmd10.Parameters.AddWithValue("@name",name); cmd10.Connection = con10; cmd10.Connection.Open();//line 7 SqlDataReader dr = cmd10.ExecuteReader(); } if ( textBox2.Text == dr[2].ToString()) { //do something; } 7行目までデバッグするInvalid attempt …
80 c#  ado.net 

2
Entity Frameworkのユーザー定義テーブルが不正なクエリを生成する
私は現在、Entity Framework 6とおそらくADO.NETのバグを経験していると思います。期限があるので、このバグが修正されるのを待つことができるかどうかわかりません。うまくいけば、誰かが私にクリーンな作業を手伝ってくれると思います。 問題は、クエリで値1と5が0.01と0.05になるはずの場所で使用されることです。しかし、奇妙なことに0.1は機能しているようです 生成されたクエリは現在次のとおりです(SQL Server Profilerから取得) declare @p3 dbo.someUDT insert into @p3 values(NULL,5) insert into @p3 values(5,0.10) insert into @p3 values(NULL,1) insert into @p3 values(1,2) exec sp_executesql N'Select * from @AName',N'@AName [dbo].[someUDT] READONLY',@AName=@p3 正しいコードは次のとおりです。 declare @p3 dbo.someUDT insert into @p3 values(NULL,0.05) insert into @p3 values(0.05,0.10) insert into @p3 values(NULL,0.01) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.