SQL 데이터베이스에서 저장 프로 시저를 실행하는 데 사용할 일련의 입력 소스가 있습니다. 저장 프로 시저는 다음과 같습니다어떻게 이것을 실행할 수 있습니까?
USE [InvoiceSHC]
GO
/****** Object: StoredProcedure [dbo].[UpdateSHCInvoice] Script Date: 02/21/2013 12:03:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[UpdateSHCInvoice]
-- Add the parameters for the stored procedure here
@Ref nvarchar(50),
@PhaseName nvarchar(50),
@PageType nvarchar(50),
@Page float,
@Percent nvarchar(50),
@ChngType nvarchar(50),
@RowCount int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into MasterData2 ([Ad],[Phase],[Page Type] , [Page Rate], [Percent] , [Change Type])
values(@Ref, @PhaseName , @PageType , @Page , @Percent ,@ChngType);
/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */
select @RowCount = @@ROWCOUNT
END
나는 테이블을 업데이트하라는 메시지를 내 양식에 버튼이 있습니다. 이것은 코드입니다 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void MasterData_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("server=(local);database=InvoiceSHC;Trusted_Connection=Yes");
SqlDataAdapter DA = new SqlDataAdapter("UpdateSHCInvoice", con);
SqlCommand cmd = new SqlCommand("UpdateSHCInvoice", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter Ref = cmd.Parameters.Add("@Ref", SqlDbType.NVarChar, 50);
SqlParameter Phase = cmd.Parameters.Add("@Phase", SqlDbType.NVarChar, 50);
SqlParameter PageType = cmd.Parameters.Add("@PageType", SqlDbType.NVarChar, 50);
SqlParameter Page = cmd.Parameters.Add("@Page", SqlDbType.NVarChar, 50);
SqlParameter Percent = cmd.Parameters.Add("@Percent", SqlDbType.Float);
SqlParameter ChngType = cmd.Parameters.Add("@ChngType", SqlDbType.NVarChar, 50);
Ref.Value = dlRef.SelectedItem;
Phase.Value = dlPhase.SelectedItem;
PageType.Value = dlPageType.SelectedItem;
Page.Value = tbPage.Text;
Percent.Value = dlPercent.SelectedItem;
ChngType.Value = dlChngType.SelectedItem;
con.Open();
cmd.ExecuteNonQuery();
}
}
}
내가 오류도없는 결과를 얻을 수 없다()을 cmd.ExecuteNonQuery을 꺼내합니다. 거기에 그 결과가 오류가 System.InvalidCastException : 개체 IConvertible 구현해야합니다.
나는 나의 무지 때문에 미리 사과한다. 나는 스스로 가르치고 새로운 것을 매일 배우고있다. 대략 127 년 4 일 동안 나는 이것을 이해할 수있을 것입니다.
nunespascal - 정말 고마워요,이 작품은 유명합니다. 나는 그것을 완성하기 위해 마지막으로 한 가지가 필요하다. 삽입을 마쳤 으면 화면의 정보를 기반으로 새로 고쳐 져야하는 gridview (gridview1)가 있습니다. 동일한 코드에 통합 될 수 있습니까? –
gridview가 이미 데이터 소스에 바인딩되어 있다면'DataBind' 만 호출하면됩니다. – nunespascal