2010-12-06 13 views
0

ユーザーIDが特定のIDと等しいバスケットIDを選択するには、このSQL Selectステートメントがあります。 、このシナリオでExecuteScalarはどのように使用できますか?

BasketPage.SelectCommand="SELECT BasketID FROM tblBasket WHERE (UserID = '9f96bd94-91b9-4328-8214-4eac179c3a26')" 

var BasketID = BasketPage.ExecuteScalar().ToString(); 

をしかし、どうやら、私はそれを動作させるためのSQLコマンドの新しいインスタンスを作成する必要があります。

私は変数にクエリの結果を保存したいので、私は私が行っていると考えていましたどのようにBasketPage Selectコマンドでこれを行うことができますか? SQL Serverを使用していると仮定すると、

+1

なぜSQLコマンドの新しいインスタンスを作成する必要があると思いますか? –

+0

新しいインスタンスを作成しないかぎり、メソッドが表示されない、または使用できないためです。 –

+1

「BasketPage」クラスのコードは何ですか?それは実際には 'SelectCommand'プロパティを持っていますか?私はあなたの 'BasketPage'クラスのコードサンプルとその中でADO.NETを使用している方法を助けてくれる、このアプローチはありません。 =) –

答えて

2

のようなものを試してみましたExecuteScalar方法。 SQL Serverを想定する:

using (var connection = new SqlConnection(connString)) 
    using (var command = connection.CreateCommand()) { 
     command.CommandText = "select BasketId from tblBasket where UserId = N'9f96bd94-91b9-4328-8214-4eac179c3a26'"; 
     command.CommandType = CommandType.Text; 

     try { 
      var basketId = (string)command.ExecuteScalar(); // Assuming BasketId is a string, since you called ToString() in your question. 
     } finally { 
      command.Dispose(); 
      connection.Dispose(); 
     } 
    } 
+0

なぜ、最終的にも使用するのか? –

+0

これは例外処理のために処理されない例外をバブルアップさせるのに適しています。さもなければそれと何か関係があります。もしtry ... catchよりtry {finally}例外を再びスローするか、スタックトレースのために新しい例外をスローします。とにかく 'finally'節を書いている間、空白にするのではなく、私はこれらのオブジェクトがとにかく処理されることを知っている間に、処理行を書きます。ですから、私がIDisposableで作業していない日が来たら、私はリソースを一方的に、または別の方法で解放することを考えなければなりません。 –

+0

私が正しく理解していれば、最終的に好きなのは、あなたが「...リソースを一方的に、または他の方法で自由にすることを考えさせるからです」。 "...私が 'IDisposable'の" Ok "と一緒に働いていない日が来ると、なぜ 'using'ステートメント –

1

あなたは私があなたのBasketPageのことは知らないが、あなたが使用して、基礎となるデータベースに対してこのクエリを実行することはできません方法はありません

BasketPage.SelectCommand = 
     new SqlCommand("SELECT BasketID FROM tblBasket WHERE (UserID = '9f96bd94-91b9-4328-8214-4eac179c3a26')", 
         "yourconnectionstring"); 
関連する問題