代码之家  ›  专栏  ›  技术社区  ›  shmnff

显式转换int到SqlInt32

  •  0
  • shmnff  · 技术社区  · 7 年前

    using System;
    using System.Diagnostics;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;
    
    public partial class UserDefinedFunctions
    {
        [SqlFunction()]
        static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE)
        {
            ProcessStartInfo p = new ProcessStartInfo();
            p.FileName = @"C:\Program Files\WinRAR\rar.exe";
            p.Arguments = String.Format("a -cfg- -ep1 -idcdp -m5 -r -s -v{0} {1} {2}", SIZE, TARGET, SRC);
            Process x = Process.Start(p);
            SqlInt32 res = x.ExitCode;
            return res;
       }
    }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Caius Jard    7 年前

    如果希望方法返回SqlInt32,则需要将其声明为返回SqlInt32。当前代码将方法的返回类型定义为 int

    static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE)
                  ^^^
    

    这行代码可以正常工作:

    SqlInt32 res = x.ExitCode;
    

    但下一次:

    return res;
    

    将尝试将SqlInt32转换为int,因为该方法返回int,但在该方向上,转换是显式的(您必须强制转换),并且由于您没有提供显式转换,因此会出现错误。您寻求的解决方案可能不是进行显式转换,而是修复方法的声明返回类型的问题

        2
  •  0
  •   Jobin    7 年前
    public static implicit operator SqlInt32 (
        int x
    )
    

    参数

    x
    

    类型:系统。Int32


    返回值
    类型:系统。数据SqlTypes。SqlInt32