C#按钮执行SQL存储过程

存储过程名字:p_vdp_vendor_jk

执行的存储过程语句:EXEC p_vdp_vendor_jk'90029','02','2017-05-22 10:57:03.513'

语句解释:90029-学生代码 02-无需更改 2017-05-22-需要定到每个月的22日

10:57:03.513 无需更改

现需要在C#窗体程序中执行该存储过程,自动将时间更改为每个月22日,学生代码需要手动填写在textbox中。执行后需要将返回值显示在DataGridView中。

烦请大神指点!

Dim arParms() As SqlParameter = New SqlParameter(2) {}

    arParms(0) = New SqlParameter("@code", SqlDbType.NVarChar, 50)
    arParms(0).Value = textbox1.text

    arParms(1) = New SqlParameter("@notChange", SqlDbType.NVarChar, 10)
    arParms(1).Value = "02"

    arParms(2) = New SqlParameter("@NeedDate", SqlDbType.NVarChar, 200)
    arParms(2).Value = now.year & "-" & now.month & "-22 10:57:03.513"

    Dim ds As DataSet = SqlHelper.ExecuteDataSet(conn, CommandType.StoredProcedure, "p_vdp_vendor_jk", arParms)

            vb 代码,相信很容易能转成C#,sqlhelper 从网上找

存储过程都写了,前端代码不会写吗

public class DataHelper
{
private string connString = null;
public DataHelper(string conStr)
{
this.connString = conStr;
}
///
/// 执行存储过程
///
/// 执行存储过程的属性
/// ProcName 存储过程的名称
/// MethodName 执行SqlCommand 方法的名称
/// PrmList 存储过程的参数
///
/// 返回执行的结果
public object ExecProcRetObj(ExeProc ep)
{
if (this.connString != null && this.connString != string.Empty)
{
try
{
SqlConnection con = new SqlConnection(this.connString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "Exec " + ep.ProcName + " ";
foreach (object obj in ep.PrmValue)
{
cmd.CommandText += obj + ",";
}
cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.Length - 1, 1);
Type ty = cmd.GetType();
con.Open();

                //用反射根据输入的方法名 执行对应的方法 
                object retObj = ty.InvokeMember(ep.MethodName, BindingFlags.InvokeMethod, null, cmd, null);
                if (retObj.GetType().FullName == "System.Data.SqlClient.SqlDataReader")
                {
                    //将返回的object 转换成DataTable 
                    DataTable retDt = new DataTable();
                    retDt.Load(retObj as SqlDataReader);
                    con.Close();
                    con.Dispose();
                    return retDt;
                }
                return retObj;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("获取数据发生错误\n" + ex.Message);
            }
        }
        return null;
    }
}
 // SqlServerHelper.ConnectionString  是我在代码中定义的链接串,用的时候替换成自己对应的连接串即可<br>using (SqlConnection connection = new SqlConnection(SqlServerHelper.ConnectionString))
            {
                connection.Open();         
                SqlCommand cmd = new SqlCommand("存储过程名", connection);
                cmd.Parameters.Add("@param1", SqlDbType.Int);
                cmd.Parameters["@param1"].Value = "param1_value";
                cmd.Parameters["@param1"].Direction = ParameterDirection.Input;
                cmd.Parameters.Add("@param2", SqlDbType.Int);
                cmd.Parameters["@param2"].Value = "param2_value";
                cmd.Parameters["@param2"].Direction = ParameterDirection.Input;//Outpu

                cmd.Connection = connection;
                cmd.CommandType = CommandType.StoredProcedure;//这里标识调用类型
                SqlDataReader dr = cmd.ExecuteReader(); //执行SQL语句,返回结果集合
          //int rerows = cmd.ExecuteNonQuery();//执行SQL语句,受影响的行数
                while (dr.Read())
                {
                    //返回结果处理
                    //dr[0],dr["col_name"]
                }
                dr.Close(); //关闭执行
                connection.Close(); //关闭数据库
            }