2

Visual Studio 2010 で SQLDataSource の Update コマンドを実行する方法はありますか?

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 つのパラメーターは奇妙に見えます。理由は定かではありませんが...

任意のアイデア...なぜそれがあまりにも多くの議論を私に言っているのですか?

4

2 に答える 2

1

SqlDataSource は EditItemTemplate にあります。つまり、これが何であれ、この GridView、Repeater の各行に SqlDataSource があるということです。

たとえば、GridView の 3 行目の SqlDataSource を取得する場合は、次のようにします。

コードビハインド:

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

この SqlDataSource のパラメーターを確認します。

于 2012-05-11T14:38:06.123 に答える
0

問題は、パラメーター定義の @ でした。

動作しません:

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

作品:

<asp:Parameter Type="DateTime" Name="COL11" Direction="Input" />
于 2012-05-11T16:30:49.290 に答える