方法一
DataSet dataset = new DataSet();
using (SqlConnection conn = new SqlConnection(SqlHelper.sqlconnectionString2))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("[dbo].[Proc_Save_OrdersPayWxNotify]"))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@P0", dt);
cmd.Parameters.AddWithValue("@P1", UserType);
using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
{
adp.Fill(dataset);
var ds = dataset;
}
}
}
如果上面代码看不懂,可以结合下面文章看
方法二
int UserType=1;
Conversion<DBUserInfoModel> helper = new Conversion<DBUserInfoModel>();
List<DBUserInfoModel> Modellist = new List<DBUserInfoModel>();
Modellist.Add(model);//model 你的数据模型实体变量参数
DataTable dt = helper.FillDataTable(Modellist);//将实体转换成DataTabl类型
SqlParameter[] parm = new SqlParameter[1];
parm[0] = new SqlParameter("@userType ", dt);
var re = ExecuteDataSet(
connectionString: SqlHelper.sqlconnectionString2,//数据库连接字符串
cmdType: CommandType.StoredProcedure,//表示是存储过程
cmdText: "InsertUserInfo ",//存储过程名称
commandParameters: parm //参数
);
上面代码用到的方法
/// <summary>
/// return a dataset
/// </summary>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>return a dataset</returns>
public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds);
conn.Close(); //记得要加上 关闭数据库连接,不然就容易出现超过最大连接池
return ds;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 为执行命令准备参数
/// </summary>
/// <param name="cmd">SqlCommand 命令</param>
/// <param name="conn">已经存在的数据库连接</param>
/// <param name="trans">数据库事物处理</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>
/// <param name="cmdParms">返回带参数的命令</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
//判断数据库连接状态
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandTimeout = 1800;
cmd.CommandText = cmdText;
//判断是否需要事物处理
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}