连接数据库帮助类:SqlHelper.cs(用的时候只需调用其中的方法名,作用:可避免在DAL层重复地写连接数据库的代码)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Collections;namespace DAL
{public class SqlHelper{private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ToString();public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(connectionString)){PrepareCommand(cmd, commandType, conn, commandText, commandParameters);int val = cmd.ExecuteNonQuery();return val;}}public static SqlDataReader GetReader(string sql){SqlConnection conn = new SqlConnection(connectionString);SqlCommand cmd = new SqlCommand(sql, conn);try{conn.Open();return cmd.ExecuteReader(CommandBehavior.CloseConnection);}catch (Exception ex){throw ex;}}public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues){using (SqlConnection conn = new SqlConnection(connectionString)){SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, conn, spName, parameterValues);int val = cmd.ExecuteNonQuery();return val;}}public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters){SqlConnection conn = new SqlConnection(connectionString);try{SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, commandType, conn, commandText, commandParameters);SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);return rdr;}catch{conn.Close();throw;}}public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues){SqlConnection conn = new SqlConnection(connectionString);try{SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, conn, spName, parameterValues);SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);return rdr;}catch{conn.Close();throw;}}public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues){using (SqlConnection conn = new SqlConnection(connectionString)){SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, conn, spName, parameterValues);using (SqlDataAdapter da = new SqlDataAdapter(cmd)){DataSet ds = new DataSet();da.Fill(ds);return ds;}}}public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters){using (SqlConnection conn = new SqlConnection(connectionString)){SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, commandType, conn, commandText, commandParameters);using (SqlDataAdapter da = new SqlDataAdapter(cmd)){DataSet ds = new DataSet();da.Fill(ds);return ds;}}}public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(connectionString)){PrepareCommand(cmd, commandType, conn, commandText, commandParameters);object val = cmd.ExecuteScalar();return val;}}public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(connectionString)){PrepareCommand(cmd, conn, spName, parameterValues);object val = cmd.ExecuteScalar();return val;}}public static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms){//打开连接if (conn.State != ConnectionState.Open)conn.Open();//设置SqlCommand对象cmd.Connection = conn;cmd.CommandText = commandText;cmd.CommandType = commandType;if (cmdParms != null){foreach (SqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}}public static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string spName, params object[] parameterValues){//打开连接if (conn.State != ConnectionState.Open)conn.Open();//设置SqlCommand对象cmd.Connection = conn;cmd.CommandText = spName;cmd.CommandType = CommandType.StoredProcedure;//获取存储过程的参数
            SqlCommandBuilder.DeriveParameters(cmd);//移除Return_Value 参数cmd.Parameters.RemoveAt(0);//设置参数值if (parameterValues != null){for (int i = 0; i < cmd.Parameters.Count; i++){cmd.Parameters[i].Value = parameterValues[i];}}}}}

用法案例1:

 //增加数据public bool CreateUserBySqlbool(User userAdd){SqlParameter[] cmdParms = new SqlParameter[]{new SqlParameter("@UserNum",userAdd.UserNum),new SqlParameter("@UserName ", userAdd.UserName),new SqlParameter("@UserPassword ", userAdd.UserPassword),new SqlParameter("@UserPower",userAdd.UserPower),new SqlParameter("@UserSex",userAdd.UserSex),new SqlParameter("@UserAge",userAdd.UserAge),new SqlParameter("@UserIDCardNum",userAdd.UserIDCardNum),new SqlParameter("@UserPhone", userAdd.UserPhone ),new SqlParameter("@UserEmail", userAdd.UserEmail),new SqlParameter("@UserPhoto", userAdd.UserPhoto),new SqlParameter("@UserAddress", userAdd.UserAddress),new SqlParameter("@Remarks", userAdd.Remarks)};string proc = "spCreateUserBySql";int result = SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure, proc, cmdParms);if (result > 0){return true;}else{return false;}}

DAL层的增加数据

用法案例2:将执行的结果强行转换为int型

int result = (int)SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, proc, cmdParms);

用法案例3:返回 DataSet列表

关键代码: DataSet ds = SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, 存储过程名称, cmdPara);

 //关键字查询public List<User> GetUserBySql(string UserName){SqlParameter[] cmdPara = new SqlParameter[]{new SqlParameter("@UserName", UserName)};           string spname = "spGetUserBySql";try{DataSet ds = SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, spname, cmdPara);if (ds.Tables.Count > 0){DataTable dt = ds.Tables[0];foreach (DataRow row in dt.Rows){User user = new User();user.UserId = (int)row["UserID"];user.UserNum = (int)row["UserNum"];user.UserName = (string)row["UserName"];user.UserPassword = (string)row["UserPassword"];user.UserPower = (string)row["UserPower"];user.UserSex = (string)row["UserSex"];user.UserAge = (int)row["UserAge"];user.UserIDCardNum = (string)row["UserIDCardNum"];user.UserPhone = (string)row["UserPhone"];user.UserEmail = (string)row["UserEmail"];user.UserPhoto = (string)row["UserPhoto"];user.UserAddress = (string)row["UserAddress"];if (DBNull.Value == row["Remarks"]) //兼容oracle,sqlserver,mysql数据库对null和''(空)的不同处理的解决方法
                        {user.Remarks = "无";}else{user.Remarks = (string)row["Remarks"];}list.Add(user);}}}                catch (SqlException ex){foreach (SqlError sqlError in ex.Errors){Console.WriteLine(sqlError.Message);}}return list;}

返回 DataSet列表

百度云盘完整案例源码:

链接:https://pan.baidu.com/s/1-PiXiSrNwy5b8c08q7B9Rw
提取码:bt2z

转载于:https://www.cnblogs.com/fzqm-lwz/p/10046653.html

.net MVC(存储过程+SQLHelper)相关推荐

  1. 关于.net mvc用sqlhelper实现用户登录操作executereader函数的使用报错

    通过控制器获取html中post获取到了username和password字段数据后通过三层结构传递给dll函数从而实现登录操作 dll中代码如下: public UserList Login(Use ...

  2. 数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)

    目录 1.jdbc总结(模板.八股文): 2.CallableStatement:调用 存储过程.存储函数 3.1JDBC调用存储过程的步骤: 3.2调存储函数: 3.处理CLOB/BLOB类型 4. ...

  3. mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值

    我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...

  4. mvc调用mysql存储过程_使用.NET MVC +EF调用oracle的存储过程

    题记: 需求如题,在网上搜索了一下,没有特别贴合我需求的资料,只好自己摸索,东拼西凑了解了一点东西慢慢尝试做了出来. 难点:.NET是微软产品,主要支持Sql Server数据库,对于Oracle的数 ...

  5. .NET MVC+ EF+调用存储过程 多表联查以及VIEW列表显示

    直接上干活,至于网上的一大堆处理方式不予评论,做好自己的就是最好的,供大家不走弯路 1.view页面 <link href="~/Content/bootstrap.css" ...

  6. mysql mvc javascript_MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。

    首先创建控制器,添加两个试图,一个Index  一个List  这里我用的是mysql Index.cshtml 代码 : @{ Layout = null; } Index @Styles.Rend ...

  7. MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。

    首先创建控制器,添加两个试图,一个Index  一个List  这里我用的是mysql Index.cshtml 代码 : @{ Layout = null; } <!DOCTYPE html& ...

  8. 搭建.NET CORE MVC + EF CORE 的Demo

    一.建库建表 USE [Test_Demo] GO /****** Object: Table [dbo].[SY_S_DEPARTMENT] Script Date: 2022/3/21 8:41: ...

  9. 一步一步写自己的SqlHelper类库

    前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...

最新文章

  1. java object monitor_Java-线程状态、ObjectMonitor
  2. Linux/Centos7系统管理之进程与计划任务管理
  3. 26.智能指针和动态内存
  4. python中unique函数_正在计算unique()的返回值
  5. ExtJS4为form表单必填项添加红色*标识
  6. 【双100%提交】剑指 Offer 09. 用两个栈实现队列
  7. 投资,个人未来的生存之道(任何个人必知)
  8. OpenCV:OpenCV目标检测Boost方法单独训练
  9. 感知算法论文(八):Generalized Intersection over Union:A Metric and A Loss for Bounding Box Regression(2019)
  10. 从人工智能到云,英特尔开源技术推动软件栈创新
  11. pandas dataframe绘制并保存图像
  12. 用户使用报告_【市场】最新手机用户使用报告 8+256GB成首选 小屏党哭了
  13. Mininet的内部实现原理简介
  14. matlab定义域为全体实数画图,MATLAB数学手册教程_第7章_绘图与图形处理
  15. 010指北方位惯导系统的力学编排之平台的指令角速度
  16. WinRAR 激活码(KEY)
  17. Centos7登陆颜色修改#PS1
  18. Invalid header signature; read 0x3C0A0D0A0DBFBBEF, expected 0xE11AB1A1E011CFD0
  19. Linux信号(signal)
  20. OpenCV—python OCR文本检测

热门文章

  1. delphi dbgrid 焦点 行号_安庆东进北扩发展超乎想象,谁会成为城市新格局里的人居焦点?...
  2. opencv对应python版本_【求问各位大佬python3.6怎么使用opencv,用哪个版本】python3 opencv...
  3. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...
  4. 创建python2与python3虚拟环境失败的原因
  5. 找出两列表共有的元素python,两个列表之间的公共元素未在Python中使用集
  6. 理清Python网络编程
  7. c++中用于字符输入的函数
  8. 判断两个对象是否相等java_判断两个对象的内容是否相等
  9. python实现一种检测postgresql数据库是否已经连接且为主节点的办法
  10. 统计“3_人民日报语料”文本中的字符数和词数,把文件分别保存为 ansi, UTF8,UTF16,unicode 格式