调用存储过程

本文关键字:存储过程 调用 | 更新日期: 2023-09-27 18:30:50

我是C#的新手,我需要调用SP并从C#返回表值。

我正在传递当前datetime(@currentdate)作为存储过程中的输入参数。那么如何在 C# 方法中传递它呢?

请帮助我编写一个 C# 方法来调用该 SP 并返回值

我已经准备好了我的 sp。sp 将返回表中更新最多的记录。

我已经在我的 C# 代码中使用它

string _Num = null;
SqlConnection sqlConnection1 = new SqlConnection("Data Source=localhost;Initial Catalog=ReferenceDB;Persist Security Info=True;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand();
Int32 rowsAffected;
Object returnValue;
cmd.CommandText = "Number";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CurrentDate", DateTime.Now);
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
rowsAffected = cmd.ExecuteNonQuery();
returnValue = cmd.ExecuteScalar();
if (returnValue != null)
    _Num = returnValue.ToString();
return _Num

调用存储过程

Write his code in that method
    SqlConnection con = new SqlConnection("coonectionstring");
    SqlCommand cmd = new SqlCommand();
     SqlCommand cmd = new SqlCommand("Your sp",con);   
    cmd.CommandType = CommandType.StoredProcedure;
    //input parameters
         cmd.Parameters.Add(new SqlParameter("@currentdate",SqlDbType.DateTime,"currentdate"));
       int i=command.ExecuteNonQuery();

如果你打算在 C# 代码中使用多个 sp,我建议这样:

public static DataTable GetSQLValues(string currentDate)
    {
        SqlParameter[] sqlParams = 
        { 
            new SqlParameter("@currentDate", currentDate)
        };
        return DBHelper.GetTable("MSSQLSPNAME", sqlParams);
    }

对需要获取表信息的每个实例使用上述方法。

GetTable 看起来像这样:

    static SqlConnection _conn;
    static string _connStr = ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["primaryConnStr"]].ToString();
    static SqlCommand _cmd;
    static SqlDataAdapter _dataAdapter = new SqlDataAdapter();
    public static DataTable GetTable(string sProcName, SqlParameter[] sqlParams)
    {
        using (_conn = new SqlConnection(_connStr))
        {
            _cmd = new SqlCommand(sProcName, _conn);
            _conn.Open();
            _cmd.CommandType = CommandType.StoredProcedure;
            if (sqlParams != null)
            {
                _cmd.Parameters.AddRange(sqlParams);
            }
            _dataAdapter = new SqlDataAdapter(_cmd);
            var results = new DataTable();
            _dataAdapter.Fill(results);
            _conn.Close();
            return results;
        }
    }

它将为您从 C# 所需的每个 sp 调用节省大量时间。