• 用C#实现对MSSqlServer数据库的增删改查DAL层


    说明:本人完成的工作是对传感器--超声波物位计进行硬件集成,上位机通过串口接收传感器数据并将其存到数据库中;在DAL层实现对数据库的增删改查,其中包含两个数据表分别是WaterLevelSet表和WaterLevelRecord表,以下代码即是完成对两张表进行数据操作。

      1 /*----------------------------------------------------------------
      2           // Copyright (C) 2013  *************
    3 // 版权所有。 4 // 5 // 文件名:WaterLevelDao.cs 6 // 文件功能描述:定义水位计设置信息相关的数据访问对象 7 // 8 // 创建标识:2013-9-22 9 // 10 // 修改标识:2013-9-23 11 // 修改描述:添加GetAllWaterLevelSetInfo,AddWaterLevelSetInfo, 12 //ModifyWaterLevelSetInfo,DelWaterLevelSetInfo等方法 13 // 14 // 修改标识:2013-9-24 15 // 修改描述:修改可空字段的数据绑定 16 //修改标识:2013-9-26 17 // 修改描述:修改AddWaterLevelSet,去掉SELECT @@IDENTITY 18 // 19 //----------------------------------------------------------------*/ 20 using System; 21 using System.Collections.Generic; 22 using System.Linq; 23 using System.Text; 24 using SMOS.Model.Device; 25 using System.Data.SqlClient; 26 using System.Data; 27 28 namespace SMOS.DAL.Device 29 { 30 public class WaterLevelSetDao 31 { 32 /// <summary> 33 /// 根据设备ID获取水位计设置信息 34 /// </summary> 35 /// <param name="deviceID"></param> 36 /// <returns>水位计设置信息</returns> 37 public WaterLevelSetInfo GetWaterLevelSetInfo(int deviceID) 38 { 39 string sql = 40 @"select t.DeviceID,t.BaseLevel,t.Remark,t.Port, 41 t.BaudRate,t.DataBites,t.ParityBit,t.StopBits,t.AcquisitionInterval, 42 t.ConnectType,t.CreateBy,t.CreateTime,t.UpdateBy,t.UpdateTime 43 from dbo.WaterLevelSet t(nolock) 44 where t.DeviceID=@DeviceID"; 45 46 IList<SqlParameter> paras = new List<SqlParameter>() 47 { 48 new SqlParameter("@DeviceID",SqlDbType.Int){Value = deviceID} 49 }; 50 51 WaterLevelSetInfo entity = null; 52 DataSet ds = DBHelper.ExecuteDataset(sql,paras.ToArray()); 53 54 if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) 55 return entity; 56 return DataRowBinding(ds.Tables[0].Rows[0]); 57 } 58 /// <summary> 59 /// 获取所有水位计设置信息 60 /// </summary> 61 /// <returns>水位计设置列表</returns> 62 public IList<WaterLevelSetInfo> GetAllWaterLevelSetInfo() 63 { 64 string sql = 65 @"select t.DeviceID,t.BaseLevel,t.Remark,t.Port, 66 t.BaudRate,t.DataBites,t.ParityBit,t.StopBits,t.AcquisitionInterval, 67 t.ConnectType,t.CreateBy,t.CreateTime,t.UpdateBy,t.UpdateTime 68 from dbo.WaterLevelSet t(nolock) 69 where 1=1"; 70 IList<WaterLevelSetInfo> lstWaterLevelSetInfo = new List<WaterLevelSetInfo>(); 71 DataSet ds = DBHelper.ExecuteDataset(sql); 72 if (ds == null || ds.Tables.Count <= 0) 73 return lstWaterLevelSetInfo; 74 foreach (DataRow dr in ds.Tables[0].Rows) 75 { 76 WaterLevelSetInfo entity = DataRowBinding(dr); 77 if (entity != null) 78 lstWaterLevelSetInfo.Add(entity); 79 } 80 return lstWaterLevelSetInfo; 81 } 82 /// <summary> 83 /// 增加水位计设置信息 84 /// </summary> 85 /// <param name="waterLevelSetInfo">水位计设置信息</param> 86 /// <returns>操作记录数</returns> 87 public int AddWaterLevelSetInfo(WaterLevelSetInfo waterLevelSetInfo) 88 { 89 if (waterLevelSetInfo == null) 90 { 91 return 0; 92 } 93 string sql= 94 @"INSERT INTO dbo.WaterLevelSet 95 (DeviceID,BaseLevel,Remark,Port,BaudRate, 96 DataBites,ParityBit,StopBits,AcquisitionInterval, 97 ConnectType,CreateBy,CreateTime 98 ) 99 VALUES 100 (@DeviceID,@BaseLevel,@Remark,@Port,@BaudRate, 101 @DataBites,@ParityBit,@StopBits,@AcquisitionInterval, 102 @ConnectType,@CreateBy,@CreateTime 103 )"; 104 IList<SqlParameter> paras = new List<SqlParameter>() 105 { 106 new SqlParameter("@DeviceID",SqlDbType.Int){Value = waterLevelSetInfo.DeviceID}, 107 new SqlParameter("@BaseLevel",SqlDbType.Decimal){Value = waterLevelSetInfo.BaseLevel}, 108 new SqlParameter("@Remark",SqlDbType.NVarChar,255){Value = waterLevelSetInfo.Remark}, 109 new SqlParameter("@Port",SqlDbType.Int){Value = waterLevelSetInfo.Port}, 110 new SqlParameter("@BaudRate",SqlDbType.Int){Value = waterLevelSetInfo.BaudRate}, 111 new SqlParameter("@DataBites",SqlDbType.Int){Value = waterLevelSetInfo.DataBits}, 112 new SqlParameter("@ParityBit",SqlDbType.Int){Value = waterLevelSetInfo.ParityBit}, 113 new SqlParameter("@StopBits",SqlDbType.Int){Value = waterLevelSetInfo.StopBits}, 114 new SqlParameter("@AcquisitionInterval",SqlDbType.Int){Value = waterLevelSetInfo.AcquisitionInterval}, 115 new SqlParameter("@ConnectType",SqlDbType.TinyInt){Value = waterLevelSetInfo.ConnectType.GetHashCode()}, 116 new SqlParameter("@CreateBy",SqlDbType.NVarChar,25){Value = Global.GlobalInfo.loginInfo.LoginAccount}, 117 new SqlParameter("@CreateTime",SqlDbType.DateTime){Value = DateTime.Now}, 118 }; 119 120 return DBHelper.ExecuteNonQuery(sql, paras.ToArray()); 121 } 122 /// <summary> 123 /// 修改水位计设置信息 124 /// </summary> 125 /// <param name="waterLevelSetInfo">水位计设置信息</param> 126 /// <returns>操作记录</returns> 127 public int ModifyWaterLevelSetInfo(WaterLevelSetInfo waterLevelSetInfo) 128 { 129 if (waterLevelSetInfo == null) 130 { 131 return 0; 132 } 133 string sql = 134 @"UPDATE dbo.WaterLevelSet 135 SET DeviceID=@DeviceID 136 ,BaseLevel=@BaseLevel 137 ,Remark=@Remark 138 ,Port=@Port 139 ,BaudRate=@BaudRate 140 ,DataBites=@DataBites 141 ,ParityBit=@ParityBit 142 ,StopBits=@StopBits 143 ,AcquisitionInterval=@AcquisitionInterval 144 ,ConnectType=@ConnectType 145 ,UpdateBy=@UpdateBy 146 ,UpdateTime=@UpdateTime 147 WHERE DeviceID=@DeviceID"; 148 IList<SqlParameter> paras = new List<SqlParameter>() 149 { 150 new SqlParameter("@DeviceID",SqlDbType.Int){Value = waterLevelSetInfo.DeviceID}, 151 new SqlParameter("@BaseLevel",SqlDbType.Decimal){Value = waterLevelSetInfo.BaseLevel}, 152 new SqlParameter("@Remark",SqlDbType.NVarChar,255){Value = waterLevelSetInfo.Remark}, 153 new SqlParameter("@Port",SqlDbType.Int){Value = waterLevelSetInfo.Port}, 154 new SqlParameter("@BaudRate",SqlDbType.Int){Value = waterLevelSetInfo.BaudRate}, 155 new SqlParameter("@DataBites",SqlDbType.Int){Value = waterLevelSetInfo.DataBits}, 156 new SqlParameter("@ParityBit",SqlDbType.Int){Value = waterLevelSetInfo.ParityBit}, 157 new SqlParameter("@StopBits",SqlDbType.Int){Value = waterLevelSetInfo.StopBits}, 158 new SqlParameter("@AcquisitionInterval",SqlDbType.Int){Value = waterLevelSetInfo.AcquisitionInterval}, 159 new SqlParameter("@ConnectType",SqlDbType.TinyInt){Value = waterLevelSetInfo.ConnectType.GetHashCode()}, 160 new SqlParameter("@UpdateBy",SqlDbType.NVarChar,25){Value = Global.GlobalInfo.loginInfo.LoginAccount}, 161 new SqlParameter("@UpdateTime",SqlDbType.DateTime){Value = DateTime.Now}, 162 }; 163 return DBHelper.ExecuteNonQuery(sql, paras.ToArray()); 164 } 165 /// <summary> 166 /// 删除水位计设置信息 167 /// </summary> 168 /// <param name="waterLevelSetInfo">水位计设置信息</param> 169 /// <returns>操作记录</returns> 170 public int DelWaterLevelSetInfo(WaterLevelSetInfo waterLevelSetInfo) 171 { 172 if (waterLevelSetInfo == null) 173 { 174 return 0; 175 } 176 string sql = 177 @"DELETE FROM dbo.WaterLevelSet 178 WHERE DeviceID = @DeviceID"; 179 IList<SqlParameter> paras = new List<SqlParameter>() 180 { 181 new SqlParameter("@DeviceID",SqlDbType.Int){Value = waterLevelSetInfo.DeviceID }, 182 }; 183 184 return DBHelper.ExecuteNonQuery(sql, paras.ToArray()); 185 } 186 #region 数据绑定 187 private WaterLevelSetInfo DataRowBinding(DataRow dr) 188 { 189 if (dr == null) 190 { 191 return null; 192 } 193 194 WaterLevelSetInfo entity = new WaterLevelSetInfo(); 195 entity.DeviceID = Convert.ToInt32(dr["DeviceID"]); 196 entity.BaseLevel = Convert.ToDecimal(dr["BaseLevel"]); 197 198 if (dr["Remark"] != DBNull.Value) 199 { 200 entity.Remark = dr["Remark"].ToString(); 201 } 202 else 203 { 204 entity.Remark = string.Empty; 205 } 206 entity.Port = Convert.ToInt32(dr["Port"]); 207 entity.BaudRate = Convert.ToInt32(dr["BaudRate"]); 208 if (dr["DataBites"] != DBNull.Value) 209 { 210 entity.DataBits = Convert.ToInt32(dr["DataBites"]); 211 } 212 if (dr["ParityBit"] != DBNull.Value) 213 { 214 entity.ParityBit = Convert.ToInt32(dr["ParityBit"]); 215 } 216 if (dr["StopBits"] != DBNull.Value) 217 { 218 entity.StopBits = Convert.ToInt32(dr["StopBits"]); 219 } 220 if (dr["AcquisitionInterval"] != DBNull.Value) 221 { 222 entity.AcquisitionInterval = Convert.ToInt32(dr["AcquisitionInterval"]); 223 } 224 if (dr["ConnectType"] != DBNull.Value) 225 { 226 entity.ConnectType = SMOS.Model.Eunm.ConvertToEnum<SMOS.Model.Eunm.DeviceConnectType>(dr["ConnectType"]); 227 } 228 if (dr["CreateBy"] != DBNull.Value) 229 { 230 entity.CreateBy = dr["CreateBy"].ToString(); 231 } 232 else 233 { 234 entity.CreateBy = string.Empty; 235 } 236 entity.CreateTime = Convert.ToDateTime(dr["CreateTime"]); 237 if (dr["UpdateBy"] != DBNull.Value) 238 { 239 entity.UpdateBy = dr["UpdateBy"].ToString(); 240 } 241 else 242 { 243 entity.UpdateBy = string.Empty; 244 } 245 if (dr["UpdateTime"] != DBNull.Value) 246 { 247 entity.UpdateTime = Convert.ToDateTime(dr["UpdateTime"]); 248 } 249 return entity; 250 } 251 #endregion 252 } 253 }
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using SMOS.Model.Device;
      6 using System.Data.SqlClient;
      7 using System.Data;
      8 
      9 
     10 namespace SMOS.DAL.Device
     11 {
     12     public class WaterLevelRecordDao
     13     {
     14         /// <summary>
     15         /// 查出水位计记录信息的最后一条记录
     16         /// </summary>
     17         /// <param name="deviceID">设备ID</param>
     18         /// <returns>操作记录</returns>
     19         public WaterLevelRecordInfo GetLastWaterLevelRecordInfo(int deviceID)
     20         {
     21             string sql =
     22                  @"select top 1
     23                       t.RecordID,t.DeviceID,t.MeasuredLevel,t.RecordTime,
     24                       t.CreateBy,t.CreateTime,t.Remark
     25                  from dbo.WaterLevelRecord t(nolock)
     26                  where t.DeviceID=@DeviceID
     27                  order by t.CreateTime desc";
     28 
     29             IList<SqlParameter> paras = new List<SqlParameter>()
     30             {
     31                 new SqlParameter("@DeviceID",SqlDbType.Int){Value = deviceID}
     32             };
     33 
     34             WaterLevelRecordInfo entity = null;
     35             DataSet ds = DBHelper.ExecuteDataset(sql, paras.ToArray());
     36 
     37             if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0)
     38             {
     39                 return entity;
     40             }
     41             return DataRowBinding(ds.Tables[0].Rows[0]);
     42 
     43         }
     44         /// <summary>
     45         /// 查询水位计的记录信息
     46         /// </summary>
     47         /// <param name="deviceID">设备ID</param>
     48         /// <returns>记录信息</returns>
     49         public IList<WaterLevelRecordInfo> GetWaterLevelRecordInfos(int deviceID)
     50         {
     51             string sql =
     52              @"select t.RecordID,t.DeviceID,t.MeasuredLevel,t.RecordTime,
     53                       t.CreateBy,t.CreateTime,t.UpdateBy,t.UpdateTime,t.Remark
     54                 from dbo.WaterLevelRecord t(nolock)
     55                 where t.DeviceID=@DeviceID";
     56             IList<SqlParameter> paras = new List<SqlParameter>()
     57             {
     58                 new SqlParameter("@DeviceID",SqlDbType.Int){Value = deviceID}
     59             };
     60             IList<WaterLevelRecordInfo> lstWaterLevelRecordInfo = new List<WaterLevelRecordInfo>();
     61             DataSet ds = DBHelper.ExecuteDataset(sql, paras.ToArray());
     62 
     63             if (ds == null || ds.Tables.Count <= 0)
     64                 return lstWaterLevelRecordInfo;
     65             foreach (DataRow dr in ds.Tables[0].Rows)
     66             {
     67                 WaterLevelRecordInfo entity = DataRowBinding(dr);
     68                 if (entity != null)
     69                 {
     70                     lstWaterLevelRecordInfo.Add(entity);
     71                 }
     72             }
     73             return lstWaterLevelRecordInfo;     
     74         }
     75         /// <summary>
     76         /// 分时间查出水位计相应记录信息
     77         /// </summary>
     78         /// <param name="deviceID">设备ID</param>
     79         /// <param name="startTime">开始时间</param>
     80         /// <param name="endTime">结束时间</param>
     81         /// <returns>记录信息</returns>
     82         public IList<WaterLevelRecordInfo> GetWaterLevelRecordInfos(int deviceID, DateTime startTime, DateTime endTime)
     83         {
     84             string sql =
     85              @"select t.RecordID,t.DeviceID,t.MeasuredLevel,t.RecordTime,
     86                       t.CreateBy,t.CreateTime,t.Remark
     87                 from dbo.WaterLevelRecord t(nolock)
     88                 where t.DeviceID=@DeviceID and RecordTime between @startTime and @endTime";
     89             IList<SqlParameter> paras = new List<SqlParameter>() 
     90             {                  
     91                 new SqlParameter("@DeviceID",SqlDbType.Int){Value = deviceID},
     92                 new SqlParameter("@startTime",SqlDbType.DateTime){Value = startTime },
     93                 new SqlParameter("@endTime",SqlDbType.DateTime){Value = endTime }
     94             };
     95             IList<WaterLevelRecordInfo> lstWaterLevelRecordInfos = new List<WaterLevelRecordInfo>();
     96             DataSet ds = DBHelper.ExecuteDataset(sql, paras.ToArray());
     97             if (ds == null || ds.Tables.Count <= 0)
     98             {
     99                 return lstWaterLevelRecordInfos; 
    100             }
    101             foreach (DataRow dr in ds.Tables[0].Rows)
    102             {
    103                 WaterLevelRecordInfo entity = DataRowBinding(dr);
    104                 if (entity != null)
    105                 {
    106                     lstWaterLevelRecordInfos.Add(entity);
    107                 }
    108             }
    109             return lstWaterLevelRecordInfos;
    110         }
    111         /// <summary>
    112         /// 增加水位计记录信息
    113         /// </summary>
    114         /// <param name="recordInfo">水位计记录信息</param>
    115         /// <returns>操作记录</returns>
    116         public int AddWaterLevelRecordInfo(WaterLevelRecordInfo recordInfo)
    117         {
    118             if (recordInfo == null)
    119             {
    120                 return 0;
    121             }
    122             string sql =
    123                  @"INSERT INTO dbo.WaterLevelRecord
    124                  (DeviceID,MeasuredLevel,RecordTime,
    125                   CreateBy,CreateTime,Remark
    126                   )
    127                 VALUES
    128                  (@DeviceID,@MeasuredLevel,@RecordTime,
    129                   @CreateBy,@CreateTime,@Remark
    130                  )
    131                  SELECT @@IDENTITY";
    132             IList<SqlParameter> paras = new List<SqlParameter>()
    133             {
    134                 new SqlParameter("@DeviceID",SqlDbType.Int){Value = recordInfo.DeviceID},
    135                 new SqlParameter("@MeasuredLevel",SqlDbType.Decimal){Value = recordInfo.MeasuredLevel},
    136                 new SqlParameter("@RecordTime",SqlDbType.DateTime){Value = recordInfo.RecordTime},
    137                 new SqlParameter("@CreateTime",SqlDbType.DateTime){Value = DateTime.Now},
    138                 new SqlParameter("@CreateBy",SqlDbType.NVarChar,25){Value = Global.GlobalInfo.loginInfo.LoginAccount},
    139                 new SqlParameter("@Remark",SqlDbType.NChar,255){Value = recordInfo.Remark},
    140             };
    141             object ret = DBHelper.ExecuteScalar(sql, paras.ToArray());//返回非表类查询结果,自增的ID
    142             if (ret != null && int.Parse(ret.ToString()) >= 0)
    143             {
    144                return int.Parse(ret.ToString());
    145             }
    146             return 0;
    147         }
    148         /// <summary>
    149         /// 更新水位计记录
    150         /// </summary>
    151         /// <param name="recordInfo">水位计记录信息</param>
    152         /// <returns>操作记录</returns>
    153         public int  ModifyWaterLevelRecordInfo(WaterLevelRecordInfo recordInfo)
    154         {
    155             if (recordInfo == null)
    156             {
    157                 return 0;
    158             }
    159             string sql =
    160                @"UPDATE dbo.WaterLevelRecord
    161              SET  DeviceID=@DeviceID
    162                  ,MeasuredLevel=@MeasuredLevel
    163                  ,RecordTime=@RecordTime
    164                  ,UpdateBy=@UpdateBy
    165                  ,UpdateTime=@UpdateTime
    166                  ,Remark=@Remark
    167               WHERE RecordID=@RecordID";
    168             IList<SqlParameter> paras = new List<SqlParameter>()
    169             {
    170                 new SqlParameter("@RecordID",SqlDbType.Int){Value = recordInfo.RecordID},
    171                 new SqlParameter("@DeviceID",SqlDbType.Int){Value = recordInfo.DeviceID},
    172                 new SqlParameter("@MeasuredLevel",SqlDbType.Decimal){Value = recordInfo.MeasuredLevel},
    173                 new SqlParameter("@RecordTime",SqlDbType.DateTime){Value = recordInfo.RecordTime},
    174                 new SqlParameter("@UpdateTime",SqlDbType.DateTime){Value = DateTime.Now},
    175                 new SqlParameter("@UpdateBy",SqlDbType.NVarChar,25){Value = Global.GlobalInfo.loginInfo.LoginAccount},
    176                 new SqlParameter("@Remark",SqlDbType.NVarChar,255){Value = recordInfo.Remark},
    177             };
    178             return DBHelper.ExecuteNonQuery(sql, paras.ToArray());
    179         }
    180         /// <summary>
    181         /// 删除水位计记录信息
    182         /// </summary>
    183         /// <param name="recordInfo">水位计记录信息</param>
    184         /// <returns>操作记录</returns>
    185         public int  DelWaterLevelRecordInfo(WaterLevelRecordInfo recordInfo)
    186         {
    187             if (recordInfo == null)
    188             {
    189                 return 0;
    190             }
    191             string sql =
    192                 @"DELETE FROM dbo.WaterLevelRecord
    193                 WHERE RecordID=@RecordID";
    194             IList<SqlParameter> paras = new List<SqlParameter>()
    195             {
    196                 new SqlParameter("@RecordID",SqlDbType.Int){Value = recordInfo.RecordID },
    197             };
    198 
    199             return DBHelper.ExecuteNonQuery(sql, paras.ToArray());      
    200         }
    201         #region 数据绑定
    202         private WaterLevelRecordInfo DataRowBinding(DataRow dr)
    203         {
    204             if (dr == null)
    205             {
    206                 return null;
    207             }
    208             WaterLevelRecordInfo entity = new WaterLevelRecordInfo();            
    209             entity.DeviceID = Convert.ToInt32(dr["DeviceID"]);
    210             entity.MeasuredLevel=Convert.ToDecimal(dr["MeasuredLevel"]);
    211             if (dr["Remark"] != DBNull.Value)
    212             {
    213                 entity.Remark = dr["Remark"].ToString();
    214             }
    215             else
    216             {
    217                 entity.Remark = string.Empty;
    218             }
    219             entity.RecordTime = Convert.ToDateTime(dr["RecordTime"]);
    220             if (dr["CreateBy"] != DBNull.Value)
    221             {
    222                 entity.CreateBy= dr["CreateBy"].ToString();
    223             }
    224             else
    225             {
    226                 entity.CreateBy = string.Empty;
    227             }
    228             entity.CreateTime = Convert.ToDateTime(dr["CreateTime"]);
    229             if (dr["UpdateBy"] != DBNull.Value)
    230             {
    231                 entity.UpdateBy = dr["UpdateBy"].ToString();
    232             }
    233             else
    234             {
    235                 entity.UpdateBy = string.Empty;
    236             }
    237             if (dr["UpdateTime"] != DBNull.Value)
    238             {
    239                 entity.UpdateTime = Convert.ToDateTime(dr["UpdateTime"]);
    240             }
    241 
    242             return entity;
    243         }
    244         #endregion
    245     }
    246 }

       若需转载请标明出处或链接http://www.cnblogs.com/EaIE099/,本人初入职场,对编程也是一个菜鸟,只想把自己所学点滴记录下来,如有不合理的地方希望各位高手多多指点,非常感谢!

  • 相关阅读:
    创业公司技术总监,去上市公司面试,结果凉了!
    Java开发最常犯的10个错误,打死都不要犯!
    这 17 个 JVM 参数,高级 Java 必须掌握!
    推荐几个顶级的IT技术公众号,坐稳了!
    Spring Boot 面试,一个问题就干趴下了!(下)
    密码已进入"淘汰"倒计时!
    一条简单的 SQL 执行超过1000ms,纳尼?
    天天用Synchronized,底层原理是个啥?
    为什么很多程序员工作时都戴耳机?
    Java转型大数据开发全套教程,都在这儿!
  • 原文地址:https://www.cnblogs.com/EaIE099/p/EaIE099.html
Copyright © 2020-2023  润新知