簡體   English   中英

C#SQL輸出代碼問題

[英]C# SQL output code issue

我遇到了以下代碼的問題,我一直在努力

“過程或函數'InsertFile'預期參數'@ID',未提供”

我必須在返回ID時做錯事。

ALTER PROCEDURE [dbo].[InsertFile] 
-- Add the parameters for the stored procedure here
    --@AssetID INT,
    @ComputerName varchar(max),
    @FilePath varchar(max),
    @Owner varchar(100),
    @Size int,
    @Extension varchar(50),
    @CreationDate datetime,
    @ModifiedDate datetime,
    @AccessedDate datetime,
    @ID int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

IF NOT EXISTS (SELECT * From DC_Files Where computerName = @ComputerName AND FilePath = @FilePath)
BEGIN   
    INSERT INTO DC_Files (ComputerName, FilePath, Owner, Size, Extension, CreationDate, ModifiedDate, AccessedDate)
        VALUES (@ComputerName, @FilePath, @Owner, @Size, @Extension, @CreationDate, @ModifiedDate, @AccessedDate)
END
ELSE
BEGIN
    UPDATE DC_Files
    SET Owner = @Owner, Size = @Size, CreationDate = @CreationDate, ModifiedDate = @ModifiedDate, AccessedDate = @AccessedDate
    WHERE computerName = @ComputerName AND FilePath = @FilePath
END
SET @ID = SCOPE_IDENTITY()
END

C#代碼:

SqlCommand cmd = new SqlCommand("InsertFile",conn);
cmd.CommandType = CommandType.StoredProcedure;

//cmd.Parameters.AddWithValue("@AssetID", FileInfo);
cmd.Parameters.AddWithValue("@ComputerName", Environment.MachineName);
cmd.Parameters.AddWithValue("@FilePath", FilePath);
cmd.Parameters.AddWithValue("@Owner", FileSecurity.GetOwner(typeof(NTAccount)).Value);
cmd.Parameters.AddWithValue("@Size", FileInfo.Length);
cmd.Parameters.AddWithValue("@Extension", FileInfo.Extension);
cmd.Parameters.AddWithValue("@CreationDate", FileCreationTime);
cmd.Parameters.AddWithValue("@ModifiedDate", FileModifiedTime);
cmd.Parameters.AddWithValue("@AccessedDate", FileAccessedTime);
var returnParameter = cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.ExecuteNonQuery();

您必須將Direction設置為Output,因為默認情況下,所有參數的Direction是Input。

      // Create parameter with Direction as Output
       SqlParameter returnParameter = new SqlParameter("@ID", SqlDbType.Int)
       { 
          Direction = ParameterDirection.Output 
       };

   cmd.Parameters.Add(returnParameter);

嘗試在您的C#代碼中按如下方式添加輸出參數

SqlParameter outPutParameter = new SqlParameter();
outPutParameter.ParameterName = "@ID";
outPutParameter.SqlDbType = System.Data.SqlDbType.Int;

outPutParameter.Direction = System.Data.ParameterDirection.Output;

 cmd.Parameters.Add(outPutParameter);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM