2017-11-28 15 views
1

私は私の割り当てのためのSQLとC#で働いています。この課題のために、私は映画データベースを運営しています。私は映画をチェックアウトする必要があるこの部分に固執しています。私はスカラー値を宣言する必要がありますが、それを行う方法がわかりません。 マイコード:スカラー値を宣言する必要がありますか?

<asp:Panel ID="panel5" runat="server" Visible="false"> 
     <asp:GridView id="one_data" AutoGenerateColumns="false" runat="server" DataKeyNames="MovieID"> 
      <Columns> 

       <asp:BoundField DataField="MovieTitle" 
        HeaderText="Movie"/> 
       <asp:BoundField DataField="DateChecked" 
        HeaderText="Date Checked"/> 
       <asp:BoundField DataField="CheckedOut" 
        HeaderText="Checked Out"/> 
      </Columns> 
     </asp:GridView> 
     <asp:Button runat="server" Text="Choose another Movie" OnClick="GoBack" /> 
     <asp:Button runat="server" Text="Check Out" OnClick="CheckOut" /> 
    </asp:Panel> 

パネル5は、ユーザーが選択したことを選択したムービーを取得し、彼らはチェックアウトボタンを押したときに、フィールドのDateChecked」と「チェックアウトしたが」日付と「Yで満たされることになっています'はい。 CSコード:それは重要ではないですので、

public void CheckOut(object sender, EventArgs e) 
    { 
     get_connection(); 
     try 
     { 

      connection.Open(); 
      command = new SqlCommand("UPDATE Content SET [email protected], [email protected] WHERE [email protected]", connection); 
      command.Parameters.AddWithValue("@DateChecked", DateTime.Now); 
      command.Parameters.AddWithValue("@CheckedOut", 'Y'); 

      reader = command.ExecuteReader(); 
      one_data.DataSource = reader; 
      one_data.DataBind(); 



      reader.Close(); 
     } 

私はキャッチ部分を残しました。私はチェックアウトムービーボタンを押すと、私はエラーを取得しておくと、私はWHERE句を削除した場合、それはすべてのムービーではなく、私が選んだ1で更新されていることを除いて動作します。これに対する修正は何でしょうか?

+2

あなたはExecuteNonQuery'がより理にかなって '' @のMovieID'値 – Diado

+1

のためのSQLパラメータを追加@Igorていません。 'ExecuteScalar'は本当にあなたが1つの行と1つの列を取得することを期待するクエリのためのものです。 – juharr

答えて

2

あなたのUPDATEコマンドは

@使用して定義されている3つの値、あなたがそれらのうちの2つを指定しているが、あなたはそれはしません結果@MovieID

command = new SqlCommand("UPDATE Content SET [email protected], [email protected] WHERE [email protected]", connection); 
      command.Parameters.AddWithValue("@DateChecked", DateTime.Now); 
      command.Parameters.AddWithValue("@CheckedOut", 'Y'); 

を指定していないがありますいくつかの有効なSQLを形成することができます。あなたはおそらく、あなたが映画のタイトルのためのあなたのboundfieldからこれを買ってあげる動画IDに

command.Parameters.AddWithValue("@MovieID", movieId);

を追加する必要があります。

+0

はどうすればboundfieldからMOVIEIDになるだろうか? –

+0

あなたがここに理解する必要があるいくつかのステップは、基本的にあなたがあなたの代わりにクリック時の行ごとに一つのボタンを、持っている場合は、あなたのRowCommandにあなたがGridViewの中のすべての値にアクセスすることができ、特定の行を取得するためにRowCommandイベントを使用する必要がありますが、あなたに関連するものを検索します。 – NibblyPig

関連する問題