public static class SQLHelp { private static readonly string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; /// <summary> /// 返回执行增加、删除、修改操作后造成影响的行数 /// </summary> /// <param name="sql">要执行的Sql语句</param> /// <param name="cmdType">要执行的命令类型</param> /// <param name="pms">传入的参数</param> /// <returns></returns> public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] pms) { using (SqlConnection con = new SqlConnection(conStr)) { using (SqlCommand cmd = new SqlCommand(sql, con)) { cmd.CommandType = cmdType; if (pms != null) { cmd.Parameters.AddRange(pms); } con.Open(); return cmd.ExecuteNonQuery(); } } } /// <summary> /// 返回数据库查询结果首行首列的值 /// </summary> /// <param name="sql">要执行的Sql语句</param> /// <param name="cmdType">要执行的命令类型</param> /// <param name="pms">传入的参数</param> /// <returns></returns> public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] pms) { using (SqlConnection con = new SqlConnection(conStr)) { using (SqlCommand cmd = new SqlCommand(sql, con)) { cmd.CommandType = cmdType; if (pms != null) { cmd.Parameters.AddRange(pms); } con.Open(); return cmd.ExecuteScalar(); } } } /// <summary> /// 返回SqlDataReader对象 /// </summary> /// <param name="sql">要执行的Sql语句</param> /// <param name="cmdType">要执行的命令类型</param> /// <param name="pms">传入的参数</param> /// <returns></returns> public static SqlDataReader ExecuteReader(string sql, CommandType cmdType, params SqlParameter[] pms) { SqlConnection con = new SqlConnection(conStr); using (SqlCommand cmd = new SqlCommand(sql, con)) { cmd.CommandType = cmdType; if (pms != null) { cmd.Parameters.AddRange(pms); } try { con.Open(); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception) { con.Close(); con.Dispose(); throw; } } } /// <summary> /// 封装一个返回DataTable对象的方法 /// </summary> /// <param name="sql">要执行的Sql语句</param> /// <param name="cmdType">要执行的命令类型</param> /// <param name="pms">传入的参数</param> /// <returns></returns> public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] pms) { DataTable dt = new DataTable(); using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr)) { adapter.SelectCommand.CommandType = cmdType; if (pms != null) { adapter.SelectCommand.Parameters.AddRange(pms); } adapter.Fill(dt); } return dt; } }
下面直接调用就可以了啊!
不要使用存储过程
这么直白明了!!
@蔚蓝色的波涛: 这个是经验之谈。存储过程会遇到各种各样的问题。
以我个人的认识。使用存储过程实际上只是为了偷懒。。
@吴瑞祥: 网上查了,是蛮多问题的。但我这次就想任性地偷个懒,为啥不能把这个函数映射过来直接使用?
@蔚蓝色的波涛: 也是十分的任性,映射过来的需要使用 从数据库更新实体,然后把存储过程也选中
@吴瑞祥: 确实是个人的经验之谈。有许多场景是适合用存储过程的,非得不用成本很高,
当然,修改设计是另外一种方法。
@爱编程的大叔: 嗯的。就是这个意思。相对于使用存储过程,我还是比较愿意去重新设计。。。
标量函数用法很简单啊,
Int myReturnValue=DataContext.myFunction(Param1, Param2);
你这个是linqtosql的用法吧
DbContext.Database.SqlQuery,这个很强大...
Esql