ConnectionState

小说:787棋牌手机版作者:伯帝杜密更新时间:2019-03-24字数:20876

ConnectionState


本文目录
1. 摘要
2. Ado.Net数据库操作封装类
3. EF Core数据库操作
4. 总结

1.  摘要

  Asp.Net Core2.0下操作MSSQL数据库,这里介绍两种操作方式,一种是.NET Framework的ADO.NET《Ado.Net百科》,另一种就是Net Core2.0下的一种orm操作EF Core,由于本人习惯Ado.Net编程模式,EF Core涉猎不是很深,推荐网友连接,本文有不写的不到之处欢迎大家批评指正。

2.  Ado.Net数据库操作封装类

  2.1配置文件

    在appsettings.json添加相关配置,配置数据库连接字符串,配置与原来在web.config中基本一致,只是形式略有差异。

 //数据库连接
  "ConnectionStrings": {
    "SqlDSN": "server=.;uid=sa;pwd=123456;database=NCMVC;Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=false;"
  }

  2.2SqlParameter参数封装DbParameters类

    以前传sql参数是以下这种,操作不太方便,顺序还不乱,添加修改删除字段代码改动量比较大。

SqlParameter[] parameters = {
                        new SqlParameter("@id", SqlDbType.NVarChar,32) ,            
                        new SqlParameter("@name", SqlDbType.NVarChar,128)            
            };    
            parameters[0].Value = model.id;                        
            parameters[1].Value = model.name; 

    封装后在使用实例如下,非常方便实用,还不用在意字段类型,所有处理都在封装类中实现。

DbParameters p = new DbParameters();
p.Add("@id", model.id);
p.Add("@name ", model.name);
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.Data.SqlClient;
  5 using System.Text;
  6 
  7 namespace NC.Core
  8 {
  9     public class DbParameters
 10     {
 11         private List<SqlParameter> li;
 12 
 13         //构造函数
 14         public DbParameters()
 15         {
 16             li = new List<SqlParameter>();
 17         }
 18 
 19         //单个参数的构造函数
 20         public DbParameters(string strName, object strValue)
 21         {
 22             li = new List<SqlParameter>();
 23             this.Add(strName, strValue);
 24         }
 25 
 26 
 27         #region ** 属性 ** 
 28         //长度
 29         public int Length
 30         {
 31             get { return li.Count; }
 32         }
 33         //索引
 34         public SqlParameter this[int k]
 35         {
 36             get
 37             {
 38                 if (li.Contains(li[k]))
 39                 {
 40                     SqlParameter parm = li[k];
 41                     return parm;
 42                 }
 43                 else
 44                 {
 45                     return null;
 46                 }
 47             }
 48         }
 49         #endregion
 50 
 51         #region ** 添加参数
 52         //添加 Input 类型参数
 53         public void Add(string sName, object sValue)
 54         {
 55             li.Add(new SqlParameter()
 56             {
 57                 ParameterName = sName.Trim(),
 58                 Value = sValue ?? DBNull.Value,
 59                 Direction = ParameterDirection.Input,
 60             });
 61         }
 62         //添加 Output 类型参数
 63         public void AddOut()
 64         {
 65             AddOut("@Result", "int", 4);
 66         }
 67         public void AddOut(string sName, string sDbType, int iSize)
 68         {
 69             li.Add(new SqlParameter()
 70             {
 71                 ParameterName = sName,
 72                 SqlDbType = ConvertSqlDbType(sDbType),
 73                 Size = iSize,
 74                 Direction = ParameterDirection.Output,
 75             });
 76         }
 77         public void AddInputOutput(string sName)
 78         {
 79             li.Add(new SqlParameter()
 80             {
 81                 ParameterName = sName,
 82                 Direction = ParameterDirection.InputOutput,
 83             });
 84         }
 85         public void AddInputOutput(string sName, string sDbType, int iSize)
 86         {
 87             li.Add(new SqlParameter()
 88             {
 89                 ParameterName = sName,
 90                 SqlDbType = ConvertSqlDbType(sDbType),
 91                 Size = iSize,
 92                 Direction = ParameterDirection.InputOutput,
 93             });
 94         }
 95         //输出测试内容
 96         public void Output()
 97         {
 98             //netcore2.0里没有HttpContext后续这里改为日志记录
 99             //System.Web.HttpContext.Current.Response.Write("参数输出:---- <br />");
100 
101             for (int i = 0; i < li.Count; i++)
102             {
103                 SqlParameter p = li[i];
104                 string pName = p.ParameterName;
105                 string pVal = Convert.ToString(p.Value);
106                 //System.Web.HttpContext.Current.Response.Write(pName + " 的值为: " + pVal + " <br />");
107             }
108         }
109         #endregion
110 
111         #region ** 参数转换函数
112         //SqlDbType数据类型转换
113         private SqlDbType ConvertSqlDbType(string strDbType)
114         {
115             SqlDbType t = new SqlDbType();
116             switch (strDbType.Trim().ToLower())
117             {
118                 case "nvarchar": t = SqlDbType.NVarChar; break;
119                 case "nchar": t = SqlDbType.NChar; break;
120                 case "varchar": t = SqlDbType.VarChar; break;
121                 case "char": t = SqlDbType.Char; break;
122                 case "int": t = SqlDbType.Int; break;
123                 case "datetime": t = SqlDbType.DateTime; break;
124                 case "decimal": t = SqlDbType.Decimal; break;
125                 case "bit": t = SqlDbType.Bit; break;
126                 case "text": t = SqlDbType.Text; break;
127                 case "ntext": t = SqlDbType.NText; break;
128                 case "money": t = SqlDbType.Money; break;
129                 case "float": t = SqlDbType.Float; break;
130                 case "binary": t = SqlDbType.Binary; break;
131             }
132             return t;
133         }
134 
135         #endregion
136 
137         #region ** 清空参数集合
138         public void Clear()
139         {
140             li.Clear();
141         }
142         #endregion
143     }
144 }
DbParameters封装类

  2.3数据库连接、增删改查操作

    默认只有一个数据库连接,多个数据库连接的话再添加实例就可以了,注意这个类是从net freamwork下老项目直接修改得来,net core下并非所有的方法都有使用过。  增、删、改、查均是SQL语句的命令,所以只要存在能向数据库发送SQL脚本的接口则可以实现,Command,要发送脚本总要知道脚本往哪里发找到了Connection,执行完脚本数据库向我们回发结果总要有一个承载 Reader、 Record。Asp.Net Core下提供的基础方法如下,参考DbHelper类完善你自己的SqlHelper类吧。

  1 using System.Collections.Generic;
  2 using Microsoft.Extensions.Logging;
  3 using System.Data.SqlClient;
  4 using System.Data;
  5 using System;
  6 using System.Collections;
  7 using System.Reflection;
  8 
  9 using NC.Common;
 10 namespace NC.Core
 11 {
 12     public class DbHelper
 13     {
 14         public static ILogger Log = UtilLogger<DbHelper>.Log;//日志记录
 15 
 16         #region --定义变量--
 17         public string dsn;
 18         //默认实例 : DbCommand.SqlDSN.CraeteSqlDataTable(sql, p); 
 19         public static DbHelper SqlDSN { get { return new DbHelper(); } }
 20 
 21         #endregion
 22 
 23         #region --构造函数--
 24         /// <summary>
 25         /// 构造函数
 26         /// </summary>
 27         public DbHelper()
 28         {
 29             //dsn = Encrypt.Dec(dsn);  //解密 
 30             //dsn = Configuration.GetConnectionString("SqlDSN");
 31             dsn = UtilConf.GetConnectionString("SqlDSN");
 32         }
 33         /// <summary>
 34         /// 多数据库
 35         /// </summary>
 36         /// <param name="strDSN"></param>
 37         public DbHelper(string strDSN)
 38         {
 39             Log.LogInformation(strDSN);
 40             //dsn = Configuration.GetConnectionString(strDSN);
 41             dsn = UtilConf.GetConnectionString(strDSN);
 42         }
 43         #endregion
 44 
 45         #region ** 打开/关闭链接 **
 46         /// <summary>
 47         /// 打开链接
 48         /// </summary>
 49         private void ConnOpen(ref SqlCommand comd)
 50         {
 51             if (comd.Connection.State == ConnectionState.Closed)
 52                 comd.Connection.Open();
 53         }
 54 
 55         /// <summary>
 56         /// 关闭链接
 57         /// </summary>
 58         private void ConnClose(ref SqlCommand comd)
 59         {
 60             if (comd.Connection.State == ConnectionState.Open)
 61             {
 62                 comd.Connection.Close();
 63             }
 64             comd.Dispose();
 65         }
 66         #endregion
 67 
 68         #region ** 创建 SqlCommand 对象
 69         /// <summary>
 70         /// 生成comd对象
 71         /// </summary>
 72         public SqlCommand CreateComd(string spName)
 73         {
 74             try
 75             {
 76                 SqlConnection conn = new SqlConnection(dsn);
 77                 SqlCommand comd = conn.CreateCommand();
 78                 comd.CommandText = spName;
 79                 comd.CommandType = CommandType.StoredProcedure;
 80 
 81                 return comd;
 82             }
 83             catch (System.Exception ex)
 84             {
 85                 Log.LogError("DbCommand->CreateComd(sp) 出错
" + ex.Message);
 86                 throw new Exception(ex.Message);
 87             }
 88         }
 89         public SqlCommand CreateComd(string spName, DbParameters p)
 90         {
 91             try
 92             {
 93                 SqlCommand comd = CreateComd(spName);
 94 
 95                 int len = p.Length;
 96                 if (len > 0)
 97                 {
 98                     for (int i = 0; i < len; i++)
 99                     {
100                         comd.Parameters.Add(p[i]);
101                     }
102                 }
103                 return comd;
104             }
105             catch (System.Exception ex)
106             {
107                 Log.LogError("DbCommand->CreateComd(sp) 出错
" + ex.Message);
108                 throw new Exception(ex.Message);
109             }
110         }
111         public SqlCommand CreateSqlComd(string strSql)
112         {
113             try
114             {
115                 SqlConnection conn = new SqlConnection(dsn);
116                 SqlCommand comd = conn.CreateCommand();
117                 comd.CommandText = strSql;
118                 comd.CommandType = CommandType.Text;
119 
120                 return comd;
121             }
122             catch (System.Exception ex)
123             {
124                 Log.LogError("DbCommand->CreateSqlComd(s) 出错
" + ex.Message);
125                 throw new Exception(ex.Message);
126             }
127         }
128         public SqlCommand CreateSqlComd(string strSql, DbParameters p)
129         {
130             try
131             {
132                 SqlCommand comd = CreateSqlComd(strSql);
133 
134                 int len = p.Length;
135                 if (len > 0)
136                 {
137                     for (int i = 0; i < len; i++)
138                     {
139                         comd.Parameters.Add(p[i]);
140                     }
141                 }
142                 return comd;
143             }
144             catch (System.Exception ex)
145             {
146                 Log.LogError("DbCommand->CreateSqlcomd(s,p) 出错
" + ex.Message);
147                 throw new Exception(ex.Message);
148             }
149         }
150         #endregion
151 
152         #region ** 创建 SqlDataAdapter 对象
153         /// <summary>
154         /// 根据存储过程名,生成SqlDataAdapter对象
155         /// </summary>
156         public SqlDataAdapter CreateAdapter(string spName)
157         {
158             try
159             {
160                 SqlConnection conn = new SqlConnection(dsn);
161                 SqlDataAdapter comdAdapter = new SqlDataAdapter(spName, conn);
162                 comdAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
163 
164                 return comdAdapter;
165             }
166             catch (System.Exception ex)
167             {
168                 Log.LogError("DbCommand->CreateAdapter(s) 出错
" + ex.Message);
169                 throw new Exception(ex.Message);
170             }
171         }
172         /// <summary>
173         /// 根据存储过程名和参数,生成SqlDataAdapter对象
174         /// </summary>
175         public SqlDataAdapter CreateAdapter(string spName, DbParameters p)
176         {
177             try
178             {
179                 SqlDataAdapter comdAdapter = CreateAdapter(spName);
180 
181                 int len = p.Length;
182                 if (len > 0)
183                 {
184                     for (int i = 0; i < len; i++)
185                     {
186                         comdAdapter.SelectCommand.Parameters.Add(p[i]);
187                     }
188                 }
189 
190                 return comdAdapter;
191             }
192             catch (System.Exception ex)
193             {
194                 Log.LogError("DbCommand->CreateAdapter(s, p) 出错
" + ex.Message);
195                 throw new Exception(ex.Message);
196             }
197         }
198         /// <summary>
199         /// 根据SQL语句,生成DataAdapter对象
200         /// </summary>
201         public SqlDataAdapter CreateSqlAdapter(string strSql)
202         {
203             try
204             {
205                 SqlConnection conn = new SqlConnection(dsn);
206                 SqlDataAdapter apter = new SqlDataAdapter(strSql, conn);
207                 apter.SelectCommand.CommandType = CommandType.Text;
208 
209                 return apter;
210             }
211             catch (System.Exception ex)
212             {
213                 Log.LogError("DbCommand->CreateSqlAdapter(s) 出错
" + ex.Message);
214                 throw new Exception(ex.Message);
215             }
216         }
217         /// <summary>
218         /// 根据SQL语句和参数,生成DataAdapter对象
219         /// </summary>
220         public SqlDataAdapter CreateSqlAdapter(string strSql, DbParameters p)
221         {
222             try
223             {
224                 SqlDataAdapter apter = CreateSqlAdapter(strSql);
225 
226                 int len = p.Length;
227                 if (len > 0)
228                 {
229                     for (int i = 0; i < len; i++)
230                     {
231                         apter.SelectCommand.Parameters.Add(p[i]);
232                     }
233                 }
234 
235                 return apter;
236             }
237             catch (System.Exception ex)
238             {
239                 Log.LogError("DbCommand->CreateSqlAdapter(s,p) 出错
" + ex.Message);
240                 throw new Exception(ex.Message);
241             }
242         }
243         #endregion
244 
245         #region ** 创建 DataReader 对象
246         /// <summary>
247         /// 根据存储过程生成生SqlDataReader
248         /// </summary>
249         public SqlDataReader CreateDataReader(string spName)
250         {
251             SqlCommand comd = CreateComd(spName);
252             return GetDataReader(comd);
253         }
254         /// <summary>
255         /// 根据存储过程和参数生成SqlDataReader
256         /// </summary>
257         public SqlDataReader CreateDataReader(string spName, DbParameters p)
258         {
259             SqlCommand comd = CreateComd(spName, p);
260             return GetDataReader(comd);
261         }
262         /// <summary>
263         /// 根据SQL语句生成SqlDataReader
264         /// </summary>
265         public SqlDataReader CreateSqlDataReader(string strSql)
266         {
267             SqlCommand comd = CreateSqlComd(strSql);
268             return GetDataReader(comd);
269         }
270         /// <summary>
271         /// 根据SQL语句和参数生成SqlDataReader
272         /// </summary>
273         public SqlDataReader CreateSqlDataReader(string strSql, DbParameters p)
274         {
275             SqlCommand comd = CreateSqlComd(strSql, p);
276             return GetDataReader(comd);
277         }
278 
279         #region - GetDataReader()
280         //获取DataReader
281         private SqlDataReader GetDataReader(SqlCommand comd)
282         {
283             try
284             {
285                 ConnOpen(ref comd);
286                 return comd.ExecuteReader(CommandBehavior.CloseConnection);
287             }
288             catch (System.Exception ex)
289             {
290                 ConnClose(ref comd);
291                 Log.LogError("DbCommand->GetDataReader() 出错
" + ex.Message);
292                 throw new Exception(ex.Message);
293             }
294         }
295         #endregion
296         #endregion
297 
298 
299         #region ** 创建 DataTable 对象
300         /// <summary>
301         /// 根据存储过程创建 DataTable 
302         /// </summary>
303         public DataTable CreateDataTable(string spName)
304         {
305             SqlDataAdapter adapter = CreateAdapter(spName);
306             return GetDataTable(adapter);
307         }
308         ///

当前文章:http://www.0477auto.com/zgptg/index.html

发布时间:2019-03-24 02:25:56

大红鹰为什么没了 全民二人麻将 集结号帐号注册手机版 乐乐课堂高中数学视频 手机通用棋牌作弊器 365斗牛作弊器通用版 血战麻将换三张微信群 喜来乐洪洞麻将官方版 手机游戏炸金花单机版 歌在线登录

编辑:帝宗丁

我要说两句: (0人参与)

发布