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

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


6
C#のパラメーターを使用してストアドプロシージャを呼び出す
プログラムで削除、挿入、更新を行うことができ、データベースから作成されたストアドプロシージャを呼び出して挿入を試みます。 これは私がうまく機能するボタンインサートです。 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } これは、sp_Add_contact連絡先を追加するための名前のプロシージャを呼び出すボタンの開始です。の2つのパラメータsp_Add_contact(@FirstName,@LastName)。グーグルで良い例を検索しましたが、興味深いものは何も見つかりませんでした。 private void button1_Click(object sender, …

3
DbArithmeticExpression引数には、共通の数値型が必要です
TimeSpan time24 = new TimeSpan(24, 0, 0); TimeSpan time18 = new TimeSpan(18, 0, 0); // first get today's sleeping hours List<Model.Sleep> sleeps = context.Sleeps.Where( o => (clientDateTime - o.ClientDateTimeStamp < time24) && o.ClientDateTimeStamp.TimeOfDay > time18 && clientDateTime.TimeOfDay < time18 && o.UserID == userid).ToList(); このLinq式は次の例外をスローします。 DbArithmeticExpression arguments must have a numeric …

7
DataTableの列名を変更するにはどうすればよいですか?
次のような4つの列を持つ1つのDataTableがあります。 StudentID CourseID SubjectCode Marks ------------ ---------- ------------- -------- 1 100 MT400 80 2 100 MT400 79 3 100 MT400 88 ここでは、このデータテーブルをXMLテーブルとして渡すことにより、このデータテーブルをSQLサーバーテーブルに挿入しています。 DataTableの列名「Marks」を「SubjectMarks」に変更して、このDataTableをXMLテーブルとして渡したいだけです。 DataTableをXMLテーブルとして渡す方法を知っています。しかし、DataTableの列名「Marks」を「SubjectMarks」に変更する方法はわかりません。
118 c#  asp.net  ado.net  datatable 

2
ExecuteReaderには、オープンで使用可能な接続が必要です。接続の現在の状態は接続中です
オンラインでASP.NETを介してMSSQLデータベースに接続しようとすると、2人以上が同時に接続すると次のようになります。 ExecuteReaderには、オープンで使用可能な接続が必要です。接続の現在の状態は「接続中」です。 このサイトは私のローカルホストサーバーで正常に動作します。 これは大まかなコードです。 public Promotion retrievePromotion() { int promotionID = 0; string promotionTitle = ""; string promotionUrl = ""; Promotion promotion = null; SqlOpenConnection(); SqlCommand sql = SqlCommandConnection(); sql.CommandText = "SELECT TOP 1 PromotionID, PromotionTitle, PromotionURL FROM Promotion"; SqlDataReader dr = sql.ExecuteReader(); while (dr.Read()) { promotionID = DB2int(dr["PromotionID"]); promotionTitle …

23
サーバーとの接続は正常に確立されましたが、ログイン前のハンドシェイク中にエラーが発生しました
ローカル環境からProduction DBに接続しようとすると、次のエラーが発生します。 以前に本番データベースに接続できましたが、突然次のエラーが発生します。 サーバーとの接続は正常に確立されましたが、ログイン前のハンドシェイク中にエラーが発生しました。(プロバイダー:TCPプロバイダー、エラー:0-ハンドルが無効です。) Production DBの接続文字列があるローカルPCでasp.net Webサイトを実行しようとしていましたが、以下はローカル環境で発生しているエラーのスタックトレースです。 > at MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex, Int32 PageSize) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsiteDAL\clsForumQuestion.cs:line 821 at CodeConnect.Default.Page_Load(Object sender, EventArgs e) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsite\Default.aspx.cs:line 100 at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) …


14
エンティティフレームワークでnull値を照会するにはどうすればよいですか?
このようなクエリを実行したい var result = from entry in table where entry.something == null select entry; そして、 IS NULL生成。 編集:最初の2つの回答の後、Linq to SQLではなくEntity Frameworkを使用していることを明確にする必要があると感じています。object.Equals()メソッドはEFでは機能しないようです。 編集2:上記のクエリは意図したとおりに機能します。正しく生成されIS NULLます。しかし、私の生産コードは value = null; var result = from entry in table where entry.something == value select entry; 生成されたSQLはでしたsomething = @p; @p = NULL。EFは定数式を正しく変換しているようですが、変数が含まれている場合は、通常の比較と同じように処理されます。実際に理にかなっています。この質問を閉じます

2
ADO.NET DataRow-列の存在を確認する
データ行に列が存在するかどうかを確認するにはどうすればよいですか? データベースからプルバックしたデータを整理するためにデータテーブルを構築しています。各行のデータのタイプに応じて、異なる列を持つデータテーブルを作成する必要があります。次に、後で、調べているデータテーブルに特定の列があるかどうかを確認します。 例外をキャッチしてそのように処理できることはわかっていますが、datarowオブジェクトにこれを行うプロパティまたはメソッドがあるかどうか知りたいのですが? 例外をキャッチすることでこれを行う方法は次のとおりです。 public static String CheckEmptyDataRowItem(DataRow row, String rowName, String nullValue) { try { return row[rowName].ToString(); } catch (System.ArgumentException) { return nullValue; } }


5
データリーダーからデータテーブルにデータを入力する
私はC#(MS VS2008)で基本的なことをやっていて、特定のコードよりも適切な設計について質問があります。 データテーブルを作成してから、(SQLストアドプロシージャに基づく)データリーダーからデータテーブルをロードしようとしています。私が疑問に思っているのは、データテーブルをロードする最も効率的な方法がwhileステートメントを実行することなのか、それとももっと良い方法があるのか​​ということです。 私にとっての唯一の欠点は、whileステートメントに追加するフィールドを手動で入力する必要があることですが、SPのすべてのフィールドがフィールドを選択するだけなので、自動化する方法がわかりません。 、しかしそれは私の目では大したことではありません。 コードスニペットは、私が行うことの全体の下に含めましたが、コード自体は目立たず、私が求めていることすらありません。さらに、私の方法論について疑問に思っているので、私の戦略が間違っている/非効率的である場合は、後でコードの助けを求めます。 var dtWriteoffUpload = new DataTable(); dtWriteoffUpload.Columns.Add("Unit"); dtWriteoffUpload.Columns.Add("Year"); dtWriteoffUpload.Columns.Add("Period"); dtWriteoffUpload.Columns.Add("Acct"); dtWriteoffUpload.Columns.Add("Descr"); dtWriteoffUpload.Columns.Add("DEFERRAL_TYPE"); dtWriteoffUpload.Columns.Add("NDC_Indicator"); dtWriteoffUpload.Columns.Add("Mgmt Cd"); dtWriteoffUpload.Columns.Add("Prod"); dtWriteoffUpload.Columns.Add("Node"); dtWriteoffUpload.Columns.Add("Curve_Family"); dtWriteoffUpload.Columns.Add("Sum Amount"); dtWriteoffUpload.Columns.Add("Base Curr"); dtWriteoffUpload.Columns.Add("Ledger"); cmd = util.SqlConn.CreateCommand(); cmd.CommandTimeout = 1000; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "proc_writeoff_data_details"; cmd.Parameters.Add("@whoAmI", SqlDbType.VarChar).Value = WindowsIdentity.GetCurrent().Name; cmd.Parameters.Add("@parmEndDateKey", SqlDbType.VarChar).Value = myMostRecentActualDate; cmd.Parameters.Add("@countrykeys", SqlDbType.VarChar).Value …
103 c#  .net  ado.net 


22
SQL Serverへの接続が機能することがある
ADO.Netアプリケーションは、ローカルネットワーク上の別のサーバーに接続できる場合があります。特定の接続試行が成功するか失敗するかはランダムに見えます。接続は次の形式の接続文字列を使用しています。 サーバー= THESERVER \ TheInstance;データベース= TheDatabase;ユーザーID = TheUser; Password = ThePassword; 返されるエラーは次のとおりです。 接続タイムアウトの期限が切れました。ログイン前のハンドシェイクの確認応答を消費しようとしたときにタイムアウト期間が経過しました。 これは、ログイン前のハンドシェイクが失敗したか、サーバーが時間内に応答できなかったことが原因である可能性があります。 このサーバーへの接続試行中に費やされた時間は-[Pre-Login] initialization = 42030;でした。handshake = 0; .NETアプリケーションは、次のコードを実行する小さなテストアプリです。 using (SqlConnection conn = new SqlConnection(cs)) using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn)) { conn.Open(); int rowCount = (int)cmd.ExecuteScalar(); } テーブルは小さく、わずか78行です。 ただし、.NETアプリケーションがこのエラーを受け取るのと同じマシンで、SSMSと接続文字列で指定されたユーザーID /パスワードを使用してTHESERVERに接続できます。 ADO.Netアプリからの接続が失敗し、SSMSからの同じ資格情報で成功するのはなぜですか?

8
ADO.NETで出力パラメーター値を取得する
私のストアドプロシージャには出力パラメーターがあります。 @ID INT OUT どうすればado.netを使用してこれを取得できますか? using (SqlConnection conn = new SqlConnection(...)) { SqlCommand cmd = new SqlCommand("sproc", conn); cmd.CommandType = CommandType.StoredProcedure; // add parameters conn.Open(); // *** read output parameter here, how? conn.Close(); }
96 c#  .net  ado.net 

12
ADO.NET Entity Framework:更新ウィザードはテーブルを追加しません
私は新しいADO.Netエンティティデータモデルを追加し、私のプロジェクトに、使用の更新ウィザードをモデルにテーブルを追加します。選択した5つのテーブルがデザイン画面に追加されました。他の2つのテーブルは追加されません。ウィザードでそれらを選択して[完了]をクリックしますが、デザイン画面には表示されません。 これはバグですか、それともテーブルを(設計上)モデルに追加できない状況がありますか? 更新:XML(* .edmx)は問題を明らかにします。 <!--Errors Found During Generation: warning 6013: The table/view 'FooBar.dbo.Roles' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.