2012-05-11 6 views
1

は、SqlDataSourceコントロールの更新コマンドをステップ実行する方法はありますか?SQLDataSource更新コマンドをデバッグする方法は? Visual Studioの2010年

私はSqlDataSourceコントロールと*これは、ストアドプロシージャを使用しています.aspxの上で指定されたパラメータを持っています。

私は「あまりにも多くの引数が指定されました」エラーを取得しています。私が指定したパラメータの数は、ストアドプロシージャと正確に一致します。だから、私はデバッグのことができるようにし、SqlDataSourceコントロールを送信しようとしているものの引数見てみたいです。

私のストアドプロシージャ:

ALTER PROCEDURE [dbo].[UPDATE_TABLEA] 
    --UPDATE 
    @ID int, 
    @COL1 varchar(200), 
    @COL2 varchar(200), 
    @COL3 varchar(20), 
    @COL4 varchar(100), 
    @COL5 varchar(100), 
    @COL6 varchar(10), 
    @COL7 varchar(200), 
    @COL8 datetime, 
    @COL9 datetime, 
    @COL10 varchar(20), 
    @COL11 datetime, 
    @COL12 varchar(20), 
    @COL13 datetime,  
    --INSERT TRANSACTION 
    @COL14 varchar(100) 

AS 

BEGIN 
    --UPDATE 
    UPDATE TABLEA SET 
     COL1 = @COL1, 
     COL2 = @COL2, 
     COL3 = @COL3, 
     COL4 = @COL4, 
     COL5 = @COL5, 
     COL6 = @COL6, 
     COL7 = @COL7, 
     COL8 = @COL8, 
     COL9 = @COL9, 
     COL10 = @COL10, 
     COL11 = @COL11, 
     COL12 = @COL12, 
     COL13 = @COL13, 
     COL15 = (SELECT COLX FROM TABLE WHERE [COLY] = 'ASDF') 
    WHERE ID = @ID 

    --ADD TRANSACTION 
    INSERT INTO TABLEB ([COL1], [COL2], id, [datetime]) VALUES (@COL14, (SELECT COLX FROM TABLE WHERE [COLY] = 'ASDF'), @ID, GETDATE()) 
END 

マイSqlDataSourceコントロール:

<asp:SqlDataSource ID="ds1" runat="server" 
      ... 
      UpdateCommand="UPDATE_TABLEA" UpdateCommandType="StoredProcedure"    
      ... 
     > 
      <UpdateParameters>  
       <asp:Parameter Type="Int32" Name="@ID" Direction="Input" /> 
       <asp:Parameter Type="String" Size="200" Name="@COL1" Direction="Input" /> 
       <asp:Parameter Type="String" Size="200" Name="@COL2" Direction="Input" /> 
       <asp:Parameter Type="String" Size="20" Name="@COL3" Direction="Input" /> 
       <asp:Parameter Type="String" Size="100" Name="@COL4" Direction="Input" /> 
       <asp:Parameter Type="String" Size="100" Name="@COL5" Direction="Input" /> 
       <asp:Parameter Type="String" Size="10" Name="@COL6" Direction="Input" /> 
       <asp:Parameter Type="String" Size="200" Name="@COL7" Direction="Input" /> 
       <asp:Parameter Type="DateTime" Name="@COL8" Direction="Input" /> 
       <asp:Parameter Type="DateTime" Name="@COL9" Direction="Input" /> 
       <asp:Parameter Type="String" Size="20" Name="@COL10" Direction="Input" /> 
       <asp:Parameter Type="DateTime" Name="@COL11" Direction="Input" /> 
       <asp:Parameter Type="String" Size="20" Name="@COL12" Direction="Input" /> 
       <asp:Parameter Type="DateTime" Name="@COL13" Direction="Input" /> 
       <asp:Parameter Type="String" Size="100" Name="@COL14" DefaultValue="<%=user_id%>" Direction="Input" /> 
      </UpdateParameters> 

は、ここでSQLプロファイラ出力です:

exec UPDATE_TABLEA @@ID=NULL,@@COL1=NULL,@@COL2=NULL,@@COL3=NULL,@@COL4=NULL,@@COL5=NULL,@@COL6=NULL,@@COL7=NULL,@@COL8=NULL,@@COL9=NULL,@@COL10=NULL,@@COL11=NULL,@@COL12=NULL,@@COL13=NULL,@@COL14=N'<%=user_id%>',@ID=1 

最後の2つのparamsは奇妙に見えます。わからないのはなぜかの...

任意のアイデア...それは私にあまりにも多くの引数を語っていますなぜですか?

+1

を、あなたは、SQL Serverへのアクセス権を持っていますか?もしそうなら、あなたはSQLプロファイラを試すことができます。 – Bridge

答えて

0

問題はパラメータ定義の@です。

は動作しません:

<asp:Parameter Type="DateTime" Name="@COL11" Direction="Input" /> 

作品:

<asp:Parameter Type="DateTime" Name="COL11" Direction="Input" /> 
0

SqlDataSourceコントロールはEditItemTemplateです。これは、このGridView、Repeaterの各行に対してSqlDataSourceが存在することを意味します。背後

コード:

SqlDataSource sqlSource = gv.Rows[2].FindControl("sqlId") as SqlDataSource; 
Response.Write(sqlSource.ConnectionString); 

は今、このSqlDataSourceコントロールのパラメータをチェックし、あなたが言う、についてのSqlDataSource、あなたのGridViewの第三の行を取得したい場合は

、あなたのような何かをしたいと思います。

関連する問題