zoukankan      html  css  js  c++  java
  • .net MVC(存储过程+SQLHelper)

    连接数据库帮助类: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

  • 相关阅读:
    C# 停止或开启服务
    微软企业库 缓存
    C# 获取图片一部分
    [转载]MVC3在win 2003虚拟主机上的调试
    mongodb查询的语法
    Mongodb亿级数据量的性能测试比较完整收藏一下
    正则验证数字
    收到了Gmail的Beta测试邀请
    C#新手经验点滴
    Windows消息机制
  • 原文地址:https://www.cnblogs.com/fzqm-lwz/p/10046653.html
Copyright © 2011-2022 走看看