存储过程名字: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(); //关闭数据库
}