分享下自己一直用的.NET SQLSERVER 封装类下自己写的DataHelper 操作类

一,概述:

这个DataHelper 类是基于我上个博客里发的SQLDataAccess 这个类做的一个简单的封装,为了结合自己的实体类和数据操作而产生的。

这里面用了  属性类,反射。还有 数据类型的方法扩展。(入门的同学可以看看。)

这里面有几个地方要注意下,一个是 GetEntity<T> 方法里的 ModelDataAttribute 对象,是我自己写的一个实体属性类。

还有 connString.IsNullOrEmpty() 这个是我封装的一个Stirng 的扩展类(StringExtensions)里的方法。这两个类在下面可以找到。

这个DataHelper类,必须基于 SQLDataAccess 和我自己定义的实体类的形式才可以实现。 这里大家只是借鉴下就好了.

yeqw.FrameWork;  我把 ModelDataAttribute StringExtensions 封装到里面了。

二:代码:

DataHelper:(这里写的不是太好,其中的分页只是调用一个分页存储过程。这个Helper里最大的一个问题,就是不支持事务,一直没考虑好怎么把事务封进来)

  1 namespace yeqw.DataHelper

  2 {

  3     using System;

  4     using System.Collections.Generic;

  5     using System.Data;

  6     using System.Data.SqlClient;

  7     using System.Reflection;

  8     using System.Runtime.InteropServices;

  9     using System.Text.RegularExpressions;

 10     using yeqw.FrameWork;

 11     using yeqw.sql.common.DB;

 12 

 13     public class DBHelper

 14     {

 15         public static int DbExecuteNonQuery(SqlCommand Command)

 16         {

 17             using (SQLDataAccess access = new SQLDataAccess())

 18             {

 19                 return access.ExecuteNonQuery(Command);

 20             }

 21         }

 22 

 23         public static int DbExecuteNonQuery(SqlCommand Command, string connString)

 24         {

 25             using (SQLDataAccess access = new SQLDataAccess(connString))

 26             {

 27                 return access.ExecuteNonQuery(Command);

 28             }

 29         }

 30 

 31         public static object DbExecuteScalar(SqlCommand Command)

 32         {

 33             SQLDataAccess access = new SQLDataAccess();

 34             return access.ExecuteScalar(Command);

 35         }

 36 

 37         public static DataTable ExecProc_sp_GetPage(string tbName, string colName, int coltype, string orderby, string collist, int pagesize, int page, string condition, out int pages, out int rsCount, out int curCount)

 38         {

 39             return ExecProc_sp_GetPage(tbName, colName, coltype, orderby, collist, pagesize, page, condition, out pages, out rsCount, out curCount, "");

 40         }

 41 

 42         public static DataTable ExecProc_sp_GetPage(string tbName, string colName, int coltype, string orderby, string collist, int pagesize, int page, string condition, out int pages, out int rsCount, out int curCount, string connstring)

 43         {

 44             SQLDataAccess access = null;

 45             DataTable table;

 46             if (connstring.IsNullOrEmpty())

 47             {

 48                 access = new SQLDataAccess();

 49             }

 50             else

 51             {

 52                 access = new SQLDataAccess(connstring);

 53             }

 54             try

 55             {

 56                 SqlCommand command = GetCommand(tbName, colName, coltype, orderby, collist, pagesize, page, condition);

 57                 DataSet ds = new DataSet();

 58                 access.FillDataSet(command, ds);

 59                 pages = (int)command.Parameters["@pages"].Value;

 60                 rsCount = (int)command.Parameters["@rsCount"].Value;

 61                 curCount = (int)command.Parameters["@curCount"].Value;

 62                 table = ds.Tables[1];

 63             }

 64             catch (Exception exception)

 65             {

 66                 throw new Exception(exception.Message);

 67             }

 68             finally

 69             {

 70                 access.Dispose();

 71             }

 72             return table;

 73         }

 74 

 75        

 76         public static List<T> FillData<T>(SqlCommand Command) where T : class, new()

 77         {

 78             return FillData<T>(Command, string.Empty);

 79         }

 80 

 81         public static List<T> FillData<T>(SqlCommand Command, string connString) where T : class, new()

 82         {

 83             List<T> list = new List<T>();

 84             SQLDataAccess access = null;

 85             if (connString.IsNullOrEmpty())

 86             {

 87                 access = new SQLDataAccess();

 88             }

 89             else

 90             {

 91                 access = new SQLDataAccess(connString);

 92             }

 93             try

 94             {

 95                 SqlDataReader reader = access.ExecuteReader(Command);

 96                 while (reader.Read())

 97                 {

 98                     T entity = Activator.CreateInstance<T>();

 99                     list.Add(GetEntity<T>(reader, entity));

100                 }

101                 if (!reader.IsClosed)

102                 {

103                     reader.Close();

104                 }

105             }

106             finally

107             {

108                 access.Dispose();

109             }

110             return list;

111         }

112 

113         public static T FillObject<T>(SqlCommand Command) where T : class, new()

114         {

115             return FillObject<T>(Command, string.Empty);

116         }

117 

118         public static T FillObject<T>(SqlCommand Command, string connString) where T : class, new()

119         {

120             SQLDataAccess access = null;

121             if (connString.IsNullOrEmpty())

122             {

123                 access = new SQLDataAccess();

124             }

125             else

126             {

127                 access = new SQLDataAccess(connString);

128             }

129             SqlDataReader reader = null;

130             try

131             {

132                 reader = access.ExecuteReader(Command);

133                 if (reader.Read())

134                 {

135                     return GetEntity<T>(reader, Activator.CreateInstance<T>());

136                 }

137             }

138             finally

139             {

140                 if (!reader.IsClosed)

141                 {

142                     reader.Close();

143                 }

144                 access.Dispose();

145             }

146             return default(T);

147         }

148 

149         private static SqlCommand GetCommand(string tbName, string colName, int coltype, string orderby, string collist, int pagesize, int page, string condition)

150         {

151             string cmdText = "sp_GetPage";

152             SqlCommand command = new SqlCommand(cmdText)

153             {

154                 CommandTimeout = 0,

155                 CommandType = CommandType.StoredProcedure

156             };

157             command.Parameters.Add("@tbName", SqlDbType.VarChar, 100);

158             command.Parameters["@tbName"].Value = tbName;

159             command.Parameters.Add("@colName", SqlDbType.VarChar, 100);

160             command.Parameters["@colName"].Value = colName;

161             command.Parameters.Add("@coltype", SqlDbType.Int, 4);

162             command.Parameters["@coltype"].Value = coltype;

163             command.Parameters.Add("@orderby", SqlDbType.VarChar, 100);

164             command.Parameters["@orderby"].Value = orderby;

165             command.Parameters.Add("@collist", SqlDbType.VarChar, 800);

166             command.Parameters["@collist"].Value = collist;

167             command.Parameters.Add("@pagesize", SqlDbType.Int, 4);

168             command.Parameters["@pagesize"].Value = pagesize;

169             command.Parameters.Add("@page", SqlDbType.Int, 4);

170             command.Parameters["@page"].Value = page;

171             command.Parameters.Add("@condition", SqlDbType.VarChar, 0x7d0);

172             command.Parameters["@condition"].Value = condition;

173             command.Parameters.Add("@pages", SqlDbType.Int);

174             command.Parameters.Add("@rsCount", SqlDbType.Int);

175             command.Parameters.Add("@curCount", SqlDbType.Int);

176             command.Parameters["@pages"].Direction = ParameterDirection.Output;

177             command.Parameters["@rsCount"].Direction = ParameterDirection.Output;

178             command.Parameters["@curCount"].Direction = ParameterDirection.Output;

179             return command;

180         }

181 

182         public static DataSet GetDataSet(SqlCommand Command)

183         {

184             SQLDataAccess access = new SQLDataAccess();

185             DataSet ds = new DataSet();

186             try

187             {

188                 access.FillDataSet(Command, ds);

189             }

190             finally

191             {

192                 access.Dispose();

193             }

194             return ds;

195         }

196 

197         public static DataTable GetDataTable(SqlCommand Command)

198         {

199             SQLDataAccess access = new SQLDataAccess();

200             DataTable table = null;

201             try

202             {

203                 table = new DataTable();

204                 table = access.FillDataSet(Command);

205             }

206             finally

207             {

208                 access.Dispose();

209             }

210             return table;

211         }

212 

213         public static DataTable GetDataTable(SqlCommand Command, string connString)

214         {

215             SQLDataAccess access = new SQLDataAccess(connString);

216             DataTable table = null;

217             try

218             {

219                 table = new DataTable();

220                 table = access.FillDataSet(Command);

221             }

222             finally

223             {

224                 access.Dispose();

225             }

226             return table;

227         }

228 

229         public static DataTable GetDataTableSchema(string TableName)

230         {

231             string cmdText = string.Format("select * from {0} where 1=2", TableName);

232             SQLDataAccess access = new SQLDataAccess();

233             DataTable table = null;

234             try

235             {

236                 SqlCommand command = new SqlCommand(cmdText);

237                 table = new DataTable();

238                 table = access.FillDataSet(command);

239             }

240             finally

241             {

242                 access.Dispose();

243             }

244             return table;

245         }

246 

247         public static DateTime GetDate()

248         {

249             DateTime now = DateTime.Now;

250             string sql = "SELECT getdate()";

251             using (SQLDataAccess access = new SQLDataAccess())

252             {

253                 SqlDataReader reader = access.ExecuteReader(sql);

254                 if (reader.Read())

255                 {

256                     now = (DateTime)reader[0];

257                 }

258                 if (!reader.IsClosed)

259                 {

260                     reader.Close();

261                 }

262             }

263             return now;

264         }

265 

266         public static T GetEntity<T>(IDataReader reader, T entity)

267         {

268             PropertyInfo[] properties = entity.GetType().GetProperties();

269             foreach (PropertyInfo info in properties)

270             {

271                 object[] customAttributes = info.GetCustomAttributes(true);

272                 if (customAttributes.Length != 0)

273                 {

274                     ModelDataAttribute attribute = (ModelDataAttribute)customAttributes[0];

275                     if (!(reader[attribute.SQLFieldName] is DBNull))

276                     {

277                         info.SetValue(entity, reader[attribute.SQLFieldName], null);

278                     }

279                 }

280             }

281             return entity;

282         }

283 

284         public static SqlParameter GetSqlParamseter(string parameterName, object Value)

285         {

286             return GetSqlParamseter(parameterName, SqlDbType.NVarChar, 0, Value);

287         }

288 

289         public static SqlParameter GetSqlParamseter(string parameterName, SqlDbType dbType, int size, ParameterDirection Direction)

290         {

291             SqlParameter parameter = new SqlParameter

292             {

293                 ParameterName = parameterName,

294                 SqlDbType = dbType,

295                 Direction = Direction

296             };

297             if (size != 0)

298             {

299                 parameter.Size = size;

300             }

301             return parameter;

302         }

303 

304         public static SqlParameter GetSqlParamseter(string parameterName, SqlDbType dbType, int size, object Value)

305         {

306             SqlParameter parameter = new SqlParameter

307             {

308                 ParameterName = parameterName,

309                 SqlDbType = dbType

310             };

311             if (((Value == null) || string.IsNullOrEmpty(Value.ToString())) || ((parameter.SqlDbType == SqlDbType.DateTime) && (DateTime.MinValue == Convert.ToDateTime(Value))))

312             {

313                 parameter.Value = DBNull.Value;

314             }

315             else

316             {

317                 parameter.Value = Value;

318             }

319             if (size != 0)

320             {

321                 parameter.Size = size;

322             }

323             return parameter;

324         }

325 

326         public static void SetDBCommandParameters(SqlCommand Comm, object entity)

327         {

328             Comm.Parameters.RemoveAt(0);

329             if (Comm.Parameters.Count > 0)

330             {

331                 PropertyInfo[] properties = entity.GetType().GetProperties();

332                 foreach (SqlParameter parameter in Comm.Parameters)

333                 {

334                     bool flag = false;

335                     foreach (PropertyInfo info in properties)

336                     {

337                         object[] customAttributes = info.GetCustomAttributes(typeof(ModelDataAttribute), true);

338                         if (customAttributes.Length != 0)

339                         {

340                             ModelDataAttribute attribute = (ModelDataAttribute)customAttributes[0];

341                             if (string.Equals(attribute.SQLFieldName, parameter.ParameterName.Replace("@", ""), StringComparison.CurrentCultureIgnoreCase))

342                             {

343                                 object obj2 = info.GetValue(entity, null);

344                                 parameter.SqlDbType = attribute.SQLDbType;

345                                 parameter.Size = attribute.SQLSize;

346                                 parameter.Direction = attribute.SQLParameterDirection;

347                                 if (obj2 != null)

348                                 {

349                                     parameter.Value = obj2;

350                                 }

351                                 else

352                                 {

353                                     parameter.Value = DBNull.Value;

354                                 }

355                                 flag = true;

356                                 break;

357                             }

358                         }

359                     }

360                     if (!flag)

361                     {

362                         throw new Exception("没有找到参数值!");

363                     }

364                 }

365             }

366         }

367 

368         public static void SetSqlParameters(SqlCommand comm, object entity)

369         {

370             comm.Parameters.Clear();

371             string commandText = comm.CommandText;

372             PropertyInfo[] properties = entity.GetType().GetProperties();

373             foreach (PropertyInfo info in properties)

374             {

375                 object[] customAttributes = info.GetCustomAttributes(typeof(ModelDataAttribute), true);

376                 if (customAttributes.Length >= 1)

377                 {

378                     ModelDataAttribute attribute = customAttributes[0] as ModelDataAttribute;

379                     if (Regex.IsMatch(commandText, "@" + attribute.SQLFieldName + @"\b", RegexOptions.Singleline | RegexOptions.IgnoreCase))

380                     {

381                         object obj2 = info.GetValue(entity, null);

382                         SqlParameter parameter = comm.CreateParameter();

383                         parameter.SqlDbType = attribute.SQLDbType;

384                         parameter.ParameterName = "@" + attribute.SQLFieldName;

385                         parameter.Size = attribute.SQLSize;

386                         parameter.Direction = attribute.SQLParameterDirection;

387                         parameter.Value = (obj2 == null) ? DBNull.Value : obj2;

388                         comm.Parameters.Add(parameter);

389                     }

390                 }

391             }

392         }

393 

394         public static int UpdateDataTable(string TableName, DataTable dataTable)

395         {

396             SQLDataAccess access = new SQLDataAccess();

397             SqlCommand selectCommand = new SqlCommand(string.Format("select * from {0} where 1=2", TableName));

398             return access.UpdateDataTable(selectCommand, dataTable);

399         }

400     }

401 }
View Code

 实体类:

 1 using System;

 2 using System.Data;

 3 using yeqw.FrameWork;

 4 using System.ComponentModel;

 5 

 6 namespace yeqw.bm.Model

 7 {

 8     /// <summary>

 9     /// Summary description for adminmenuinfo

10     /// </summary>

11     [Serializable]

12     public class AdminMenuInfo

13     {

14         /// <summary>

15         /// 流水号

16         /// </summary>

17         [ModelData("ID", SqlDbType.Int, 4, ParameterDirection.InputOutput)]

18         public int ID

19         {

20             set;

21             get;

22         }

23         /// <summary>

24         /// 用户流水号

25         /// </summary>

26         [ModelData("AdminID", SqlDbType.Int, 4)]

27         public int AdminID

28         {

29             set;

30             get;

31         }

32         /// <summary>

33         /// 菜单权限流水号

34         /// </summary>

35         [ModelData("MenuAuthorityID", SqlDbType.Int, 4)]

36         public int MenuAuthorityID

37         {

38             set;

39             get;

40         }

41 

42         /// <summary>

43         /// 操作员流水号

44         /// </summary>

45         [ModelData("OperAdminID", SqlDbType.Int, 4)]

46         public int OperAdminID

47         {

48             set;

49             get;

50         }

51 

52         /// <summary>

53         /// 操作时间

54         /// </summary>

55         [ModelData("OperTime", SqlDbType.DateTime, 8)]

56         public DateTime OperTime

57         {

58             set;

59             get;

60         }

61 

62         /// <summary>

63         /// 角色菜单权限状态(0 冻结 1 正常,2关闭)

64         /// </summary>

65         [ModelData("Status", SqlDbType.TinyInt, 1)]

66         public byte Status

67         {

68             set;

69             get;

70         }

71         /// <summary>

72         /// 入库时间

73         /// </summary>

74         [ModelData("InsertTime", SqlDbType.DateTime, 8)]

75         public DateTime InsertTime

76         {

77             set;

78             get;

79         }

80     }

81 }
实体类

StringExtensions 类:

namespace yeqw.FrameWork

{

    using System;

    using System.Runtime.CompilerServices;

    using System.Text;

    using System.Text.RegularExpressions;

    using System.Web.Script.Serialization;



    public static class StringExtensions

    {

        public static bool CheckSqlCondition(this string input)

        {

            return true;

        }



        public static object Deserialize(this string base64Str)

        {

            return SerializeHelper.Deserialize(base64Str);

        }



        public static string FormatExtension(this string input, params object[] args)

        {

            return string.Format(input, args);

        }



        public static bool IsALLInteger(this string input)

        {

            return Regex.IsMatch(input, @"^([-]\d+)|\d+$");

        }



        public static bool IsAZaz09(this string input)

        {

            return Regex.IsMatch(input, "^[A-Za-z0-9]+$");

        }



        public static bool IsByte(this string input)

        {

            byte num;

            return byte.TryParse(input, out num);

        }



        public static bool IsChinese(this string input)

        {

            return Regex.IsMatch(input, "^([一-龥]|[︰-ᅠ])+$");

        }



        public static bool IsDecimal(this string input)

        {

            decimal num;

            return decimal.TryParse(input, out num);

        }



        public static bool IsEmail(this string input)

        {

            return Regex.IsMatch(input, @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

        }



        public static bool IsEnglish(this string input)

        {

            return Regex.IsMatch(input, "^[a-zA-Z]+$");

        }



        public static bool IsIdCard(this string input)

        {

            string str;

            string str2;

            string str3 = "10x98765432";

            int[] numArray = new int[] { 

                7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 

                2

             };

            string[] strArray = new string[] { 

                "", "", "", "", "", "", "", "", "", "", "", "北京", "天津", "河北", "山西", "内蒙古", 

                "", "", "", "", "", "辽宁", "吉林", "黑龙江", "", "", "", "", "", "", "", "上海", 

                "江苏", "浙江", "安微", "福建", "江西", "山东", "", "", "", "河南", "湖北", "湖南", "广东", "广西", "海南", "", 

                "", "", "重庆", "四川", "贵州", "云南", "西藏", "", "", "", "", "", "", "陕西", "甘肃", "青海", 

                "宁夏", "新疆", "", "", "", "", "", "台湾", "", "", "", "", "", "", "", "", 

                "", "香港", "澳门", "", "", "", "", "", "", "", "", "国外"

             };

            Match match = Regex.Match(input, @"^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[xX\d])))$");

            if (match.Length == 0)

            {

                return false;

            }

            if ((int.Parse(match.Result("$1")) >= strArray.Length) || (strArray[int.Parse(match.Result("$1"))] == ""))

            {

                return false;

            }

            if (match.Result("$2").Length == 12)

            {

                str2 = input.Substring(0, 0x11);

                str = string.Format("{0}-{1}-{2}", match.Result("$9"), match.Result("$10"), match.Result("$11"));

            }

            else

            {

                str2 = input.Substring(0, 6) + "19" + input.Substring(6);

                str = string.Format("19{0}-{1}-{2}", match.Result("$4"), match.Result("$5"), match.Result("$6"));

            }

            try

            {

                DateTime.Parse(str);

            }

            catch (Exception)

            {

                return false;

            }

            int num = 0;

            for (int i = 0; i <= 0x10; i++)

            {

                num += int.Parse(str2.Substring(i, 1)) * numArray[i];

            }

            str2 = str2 + str3.Substring(num % 11, 1);

            return ((input.Length == 15) || ((input.Length == 0x12) && (input == str2)));

        }



        public static bool IsInteger(this string input)

        {

            return Regex.IsMatch(input, "^[0-9]+$");

        }



        public static bool IsIP(this string input)

        {

            return Regex.IsMatch(input, @"^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$");

        }



        public static bool IsNullOrEmpty(this string input)

        {

            return string.IsNullOrEmpty(input);

        }



        public static bool IsPhone(this string input)

        {

            return Regex.IsMatch(input, @"^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$");

        }



        public static bool IsUrl(this string input)

        {

            return Regex.IsMatch(input, "^http:\\/\\/[A-Za-z0-9\\./=\\?%\\-&_~`@[\\]\\':+!]+([^<>\"])+$");

        }



        public static string NoHTML(this string Htmlstring)

        {

            Htmlstring = Regex.Replace(Htmlstring, "<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "<(.[^>]*)>", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "-->", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "<!--.*", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(quot|#34);", "\"", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(amp|#38);", "&", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(lt|#60);", "<", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(gt|#62);", ">", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(nbsp|#160);", " ", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(iexcl|#161);", "\x00a1", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(cent|#162);", "\x00a2", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(pound|#163);", "\x00a3", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, "&(copy|#169);", "\x00a9", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

            Htmlstring = Htmlstring.Replace("<", "");

            Htmlstring = Htmlstring.Replace(">", "");

            Htmlstring = Htmlstring.Replace("\r\n", "");

            Htmlstring = Htmlstring.Replace("&hellip;", "");

            Htmlstring = Htmlstring.Replace("&mdash;", "");

            Htmlstring = Htmlstring.Replace("&rdquo;", "");

            Htmlstring = Htmlstring.Replace("&ldquo;", "");

            return Htmlstring;

        }



        public static string SubStringCN(this string stringToSub, int length, string flage)

        {

            if (stringToSub.IsNullOrEmpty())

            {

                return string.Empty;

            }

            Regex regex = new Regex("[一-龥]+", RegexOptions.Compiled);

            char[] chArray = stringToSub.ToCharArray();

            int byteCount = Encoding.Default.GetByteCount(stringToSub);

            StringBuilder builder = new StringBuilder();

            string str = string.Empty;

            int num2 = 0;

            for (int i = 0; i < byteCount; i++)

            {

                if (i >= chArray.Length)

                {

                    return str;

                }

                if (regex.IsMatch(chArray[i].ToString()))

                {

                    num2 += 2;

                }

                else

                {

                    num2++;

                }

                builder.Append(chArray[i]);

                if (num2 > length)

                {

                    return (builder.ToString(0, builder.ToString().Length - 1) + flage);

                }

                str = builder.ToString();

            }

            return str;

        }



        public static int ToByte(this string input)

        {

            return byte.Parse(input);

        }



        public static decimal ToDecimal(this string input)

        {

            return decimal.Parse(input);

        }



        public static long ToInt64(this string input)

        {

            return long.Parse(input);

        }



        public static int ToInteger(this string input)

        {

            return int.Parse(input);

        }



        public static T ToObject<T>(this string input) where T: class, new()

        {

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            return serializer.Deserialize<T>(input);

        }



        public static bool Validate(this string input, string parrtern)

        {

            return Regex.IsMatch(input, parrtern);

        }

    }

}
View Code

ModelDataAttribute 类:

namespace yeqw.FrameWork

{

    using System;

    using System.Data;

    using System.Runtime.CompilerServices;



    [AttributeUsage(AttributeTargets.Property, Inherited=true)]

    public class ModelDataAttribute : Attribute

    {

        public ModelDataAttribute(string sqlFieldName, SqlDbType sqlParameterType) : this(sqlFieldName, sqlParameterType, 0)

        {

        }



        public ModelDataAttribute(string sqlFieldName, SqlDbType sqlParameterType, int sqlparametersize) : this(sqlFieldName, sqlParameterType, sqlparametersize, ParameterDirection.Input)

        {

        }



        public ModelDataAttribute(string sqlFieldName, SqlDbType sqlParameterType, int sqlparametersize, ParameterDirection sqlParameterDirection)

        {

            this.SQLFieldName = sqlFieldName;

            this.SQLDbType = sqlParameterType;

            this.SQLSize = sqlparametersize;

            this.SQLParameterDirection = sqlParameterDirection;

        }



        public void Validate(object value)

        {

            if (!this.CanNull && string.IsNullOrEmpty(value.ToString()))

            {

                throw new ArgumentException(this.Message);

            }

        }



        public bool CanNull { get; set; }



        public string Message { get; set; }



        public SqlDbType SQLDbType { get; set; }



        public string SQLFieldName { get; set; }



        public ParameterDirection SQLParameterDirection { get; set; }



        public int SQLSize { get; set; }



        public enum EnumValidateType : byte

        {

            IsMaxLength = 2,

            IsNull = 0,

            IsNumber = 1

        }

    }

}
View Code

三:总结:

  DataHepler 和SQLDataAccess 这两个类都是比较简单的一个类库设计。做任何项目适合自己的才是最好的。用CodeSmith 这样的工具都能生成很好的只要的类库。

但我希望大家尤其是刚入门的童鞋要明白,基础才是一切的根本。知其然更要致其所以然。在编程的路上遇到不同的级别的项目,尤其现在都说的大数据时代。任何的类库

都是有自己的局限性的。只有因地制宜,根据实际需要做出自己最合理的选择才是王道。不仅要举一翻三,更要一通百通。类库是死的人是活的,不管是什么样的技术,明白

基础了,才是最重要的。(自己的一点感慨,瞎喷的。呵呵)

================================================================= 
HI,如果童鞋们觉得本人此博文对你有用,请不要吝啬自己的鼠标,给此博文一个“推荐”吧。鼓励,鼓励。哈哈 

本博文系博主原创,版权归博主所有,如需转载,请注明转载地址。

当前博客原始地址:yeqw1985.cnblogs.com 

=================================================================

新浪微博 http://www.weibo.com/yeqw  热烈欢迎大家一起交流讨论并提出宝贵意见,多多指导。

你可能感兴趣的:(sqlserver)