自用数据库类升级,支持SQLITE,ACCESS,SQLSERVER,支持直接对象操作,支持类似LINQ的查询语句写法,2.0框架!

DBHelper 源码:

DBHelper
  1     /// <summary>
  2     /// 数据库操作类
  3     /// </summary>
  4     public sealed class DB : IDisposable
  5     {
  6         #region 数据库类型枚举
  7         /// <summary>
  8         /// 数据库类型
  9         /// </summary>
 10         public enum DBType
 11         {
 12             /// <summary>
 13             /// SQLSERVER
 14             /// </summary>
 15             SQLSERVER,
 16             /// <summary>
 17             /// MDB
 18             /// </summary>
 19             MDB,
 20             /// <summary>
 21             /// SQLITE
 22             /// </summary>
 23             SQLITE
 24         }
 25         #endregion
 26 
 27         #region 公共成员
 28         /// <summary>
 29         /// 连接字符串(可用本类的静态方法生成)
 30         /// GetSQLConnectionString
 31         /// GetMdbConnectionString
 32         /// GetSQLiteConnectionString
 33         /// </summary>
 34         public string ConnectionString { get; set; } //连接字符串
 35 
 36         DBType _DbType;
 37 
 38         /// <summary>
 39         /// 数据库类型
 40         /// </summary>
 41         public DBType DbType
 42         {
 43             get { return this._DbType; }
 44             set
 45             {
 46                 this._DbType = value;
 47                 switch (value)
 48                 {
 49                     case DBType.SQLSERVER:
 50                         Factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
 51                         break;
 52                     case DBType.MDB:
 53                         Factory = DbProviderFactories.GetFactory("System.Data.OleDb");
 54                         break;
 55                     case DBType.SQLITE:
 56                         Factory = DbProviderFactories.GetFactory("System.Data.SQLite");
 57                         break;
 58                 }
 59             }
 60         } //数据库类型
 61 
 62         /// <summary>
 63         /// 查询字符串
 64         /// </summary>
 65         public string CommandText { get; set; } //查询语句
 66 
 67         #endregion
 68 
 69         #region 私有成员
 70 
 71         private DbParameterCollection Parameters { get; set; } //参数集合
 72 
 73         #endregion
 74 
 75         #region 初始成员
 76 
 77         private DbConnection Conn = null; //连接对象
 78 
 79         private DbProviderFactory Factory = null; //数据库工厂                
 80 
 81         private List<myTran> TranList = new List<myTran>(); //事务集合
 82 
 83         #endregion
 84 
 85         #region 构造函数
 86 
 87 
 88         /// <summary>
 89         /// 构造函数
 90         /// </summary>
 91         /// <param name="dbType">数据库类别,可使用DB.DBType获得</param>
 92         /// <param name="connectionString">
 93         /// 连接字符串,可使用本类的静态方法获得
 94         /// GetSQLConnectionString
 95         /// GetMdbConnectionString
 96         /// GetSQLiteConnectionString
 97         /// </param>
 98         public DB(DBType dbType, string connectionString)
 99         {
100             this.DbType = dbType;
101             this.ConnectionString = connectionString;
102             this.Parameters = Factory.CreateCommand().Parameters;
103             this.Open();
104         }
105         #endregion
106 
107         #region 初始化与自动释放
108         /// <summary>
109         /// 打开数据库
110         /// </summary>
111         public void Open()
112         {
113             try
114             {
115                 if (Conn == null)
116                 {
117                     Conn = Factory.CreateConnection();
118                     Conn.ConnectionString = this.ConnectionString;
119                     Conn.Open();
120                 }
121                 else
122                 {
123                     if (Conn.State == ConnectionState.Closed)
124                         Conn.Open();
125                 }
126             }
127             catch (Exception)
128             {
129                 throw;
130             }
131         }
132 
133         /// <summary>
134         /// 关闭数据库
135         /// </summary>
136         public void Close()
137         {
138             try
139             {
140                 if (Conn.State == ConnectionState.Open)
141                     Conn.Close();
142             }
143             catch (Exception)
144             {
145                 throw;
146             }
147         }
148 
149         /// <summary>
150         /// 自动释放资源
151         /// </summary>
152         public void Dispose()
153         {
154             try
155             {
156                 this.CommandText = string.Empty;
157                 this.Parameters = null;
158                 this.ConnectionString = string.Empty;
159                 this.TranList = null;
160                 Close();
161             }
162             catch (Exception)
163             {
164                 throw;
165             }
166         }
167         #endregion
168 
169         #region 添加查询参数
170         /// <summary>
171         /// 添加查询参数
172         /// </summary>
173         /// <param name="name">参数名 如:@Name</param>
174         /// <param name="value">参数值 如:"Name"</param>
175         public void AddParameter(string name, object value)
176         {
177             var pa = Factory.CreateParameter();
178             pa.ParameterName = name;
179             pa.Value = value;
180             this.Parameters.Add(pa);
181         }
182 
183         /// <summary>
184         /// 添加对象为查询参数
185         /// </summary>
186         /// <typeparam name="T">对象类型</typeparam>
187         /// <param name="model">对象</param>
188         public void AddParameters<T>(T model) where T : class,new()
189         {
190             Type t = typeof(T);
191             Array.ForEach<System.Reflection.PropertyInfo>(t.GetProperties(), p =>
192             {
193                 AddParameter("@" + p.Name, p.GetValue(model, null));
194             });
195         }
196 
197         /// <summary>
198         /// 顺序添加数组为查询参数
199         /// </summary>
200         /// <param name="names">参数名 如:{"@Name","@Age"}</param>
201         /// <param name="values">参数值 如:{"Name",20}</param>
202         public void AddParameters(string[] names, object[] values)
203         {
204             if (names.Length != values.Length)
205                 throw new Exception("参数名称跟参数值数量不匹配!");
206             for (var i = 0; i < names.Length; i++)
207             {
208                 var pa = Factory.CreateParameter();
209                 pa.ParameterName = names[i];
210                 pa.Value = values[i];
211                 this.Parameters.Add(pa);
212             }
213         }
214         #endregion
215 
216         #region 创建查询参数
217         /// <summary>
218         /// 创建查询参数
219         /// </summary>
220         /// <param name="name">参数名 如:"@Name"</param>
221         /// <param name="value">参数值 如:"Name"</param>
222         /// <returns></returns>
223         public DbParameter CreateParameter(string name, object value)
224         {
225             var pa = Factory.CreateParameter();
226             pa.ParameterName = name;
227             pa.Value = value;
228             return pa;
229         }
230 
231         /// <summary>
232         /// 通过数组创建查询参数
233         /// </summary>
234         /// <param name="names">参数名 如:{"@Name","@Age"}</param>
235         /// <param name="values">参数值 如:{"Name",20}</param>
236         /// <returns></returns>
237         public List<DbParameter> CreateParameters(string[] names, object[] values)
238         {
239             if (names.Length != values.Length)
240                 throw new Exception("参数名称跟参数值数量不匹配!");
241             var parameters = new List<DbParameter>();
242             for (var i = 0; i < names.Length; i++)
243             {
244                 parameters.Add(CreateParameter(names[i], values[i]));
245             }
246             return parameters;
247         }
248 
249 
250         /// <summary>
251         /// 通过对象创建查询参数
252         /// </summary>
253         /// <typeparam name="T">对象类型</typeparam>
254         /// <param name="model">对象</param>
255         /// <returns></returns>
256         public List<DbParameter> CreateParameters<T>(T model) where T : class,new()
257         {
258             var parameters = new List<DbParameter>();
259             Type t = typeof(T);
260             Array.ForEach<System.Reflection.PropertyInfo>(t.GetProperties(), p =>
261             {
262                 parameters.Add(CreateParameter(p.Name, p.GetValue(model, null)));
263             });
264             return parameters;
265         }
266         #endregion
267 
268         #region 清除查询字符串和查询参数
269         /// <summary>
270         /// 清除查询字符串和查询参数
271         /// </summary>
272         void Clear()
273         {
274             this.CommandText = "";
275             if (this.Parameters != null)
276                 this.Parameters.Clear();
277         }
278         #endregion
279 
280         #region 返回一个DataTable
281         /// <summary>
282         /// 返回一个DataTable
283         /// </summary>
284         public DataTable ExecuteDataTable()
285         {
286             try
287             {
288                 using (DbCommand cmd = Factory.CreateCommand())
289                 {
290                     Open();
291                     cmd.Connection = this.Conn;
292                     cmd.CommandText = this.CommandText;
293                     //cmd.Parameters.AddRange(this.Parameters);   
294                     if (this.Parameters != null)
295                         foreach (var para in this.Parameters)
296                         {
297                             var p = cmd.CreateParameter();
298                             p.ParameterName = (para as DbParameter).ParameterName;
299                             p.Value = (para as DbParameter).Value;
300                             cmd.Parameters.Add(p);
301                         }
302                     Clear();
303 
304                     DbDataReader dr = cmd.ExecuteReader();
305                     DataTable dt = new DataTable();
306                     dt.Load(dr);
307                     return dt;
308                 }
309             }
310             catch (Exception)
311             {
312                 throw;
313             }
314             finally
315             {
316                 Clear();
317             }
318         }
319         #endregion
320 
321         #region 执行一条更新语句
322         /// <summary>
323         /// 执行一条更新语句
324         /// </summary>        
325         public int ExecuteNonQuery()
326         {
327             try
328             {
329                 using (DbCommand cmd = Factory.CreateCommand())
330                 {
331                     Open();
332                     cmd.Connection = this.Conn;
333                     cmd.CommandText = this.CommandText;
334                     if (this.Parameters != null)
335                         foreach (var para in this.Parameters)
336                         {
337                             var p = cmd.CreateParameter();
338                             p.ParameterName = (para as DbParameter).ParameterName;
339                             p.Value = (para as DbParameter).Value;
340                             cmd.Parameters.Add(p);
341                         }
342                     Clear();
343                     if (this.Conn.State == ConnectionState.Closed)
344                         Open();
345                     return cmd.ExecuteNonQuery();
346                 }
347             }
348             catch (Exception)
349             {
350                 throw;
351             }
352             finally
353             {
354                 Clear();
355             }
356         }
357         #endregion
358 
359         #region 返回首行首列
360         /// <summary>
361         /// 返回首行首列
362         /// </summary>
363         /// <returns></returns>
364         public object ExecuteScalar()
365         {
366             try
367             {
368                 using (var cmd = Factory.CreateCommand())
369                 {
370                     Open();
371                     cmd.Connection = this.Conn;
372                     cmd.CommandText = this.CommandText;
373                     if (this.Parameters != null)
374                         foreach (var para in this.Parameters)
375                         {
376                             var p = cmd.CreateParameter();
377                             p.ParameterName = (para as DbParameter).ParameterName;
378                             p.Value = (para as DbParameter).Value;
379                             cmd.Parameters.Add(p);
380                         }
381                     Clear();
382                     if (this.Conn.State == ConnectionState.Closed)
383                         Open();
384                     return cmd.ExecuteScalar();
385                 }
386             }
387             catch (Exception)
388             {
389                 throw;
390             }
391             finally
392             {
393                 Clear();
394             }
395         }
396 
397         /// <summary>
398         /// 返回首行首列
399         /// </summary>
400         /// <returns></returns>
401         public int ExecuteScalarToInt()
402         {
403             try
404             {
405                 using (var cmd = Factory.CreateCommand())
406                 {
407                     Open();
408                     cmd.Connection = this.Conn;
409                     cmd.CommandText = this.CommandText;
410                     if (this.Parameters != null)
411                         foreach (var para in this.Parameters)
412                         {
413                             var p = cmd.CreateParameter();
414                             p.ParameterName = (para as DbParameter).ParameterName;
415                             p.Value = (para as DbParameter).Value;
416                             cmd.Parameters.Add(p);
417                         }
418                     Clear();
419                     if (this.Conn.State == ConnectionState.Closed)
420                         Open();
421                     return int.Parse(cmd.ExecuteScalar().ToString());
422                 }
423             }
424             catch (Exception)
425             {
426                 throw;
427             }
428             finally
429             {
430                 Clear();
431             }
432         }
433         #endregion
434 
435         #region 自定义事务类
436         class myTran
437         {
438             public string queryString { get; set; }
439             public List<DbParameter> parameters { get; set; }
440 
441             public myTran(string queryString, List<DbParameter> parameters)
442             {
443                 this.queryString = queryString;
444                 this.parameters = parameters;
445             }
446         }
447         #endregion
448 
449         #region 添加事务
450         /// <summary>
451         /// 添加事务
452         /// </summary>
453         /// <param name="queryString">查询语句</param>
454         /// <param name="parameters">参数列表 可通过本类的CreateParameters方法生成</param>
455         public void AddTran(string queryString, List<DbParameter> parameters)
456         {
457             var tran = new myTran(queryString, parameters);
458             TranList.Add(tran);
459         }
460 
461         /// <summary>
462         /// 添加事务
463         /// </summary>
464         /// <param name="queryString">查询语句</param>
465         /// <param name="parameter">参数 可通过本类的CreateParameter方法生成</param>
466         public void AddTran(string queryString, DbParameter parameter)
467         {
468             List<DbParameter> paras = new List<DbParameter>();
469             if (parameter != null)
470                 paras.Add(parameter);
471             var tran = new myTran(queryString, paras);
472             TranList.Add(tran);
473         }
474         #endregion
475 
476         #region 清除事务
477         void ClearTran()
478         {
479             TranList.Clear();
480         }
481         #endregion
482 
483         #region 执行事务
484         /// <summary>
485         /// 执行事务
486         /// </summary>
487         public void ExecuteTran()
488         {
489             try
490             {
491                 using (DbTransaction tran = Conn.BeginTransaction())
492                 {
493                     try
494                     {
495                         if (this.Conn.State == ConnectionState.Closed)
496                             Open();
497                         TranList.ForEach(m =>
498                         {
499                             using (var cmd = this.Factory.CreateCommand())
500                             {
501                                 cmd.Connection = this.Conn;
502                                 cmd.CommandText = m.queryString;
503                                 cmd.Transaction = tran;
504                                 m.parameters.ForEach(n =>
505                                 {
506                                     cmd.Parameters.Add(n);
507                                 });
508                                 cmd.ExecuteNonQuery();
509                             }
510                         });
511                         tran.Commit();
512                     }
513                     catch (Exception)
514                     {
515                         tran.Rollback();
516                         throw;
517                     }
518                     finally
519                     {
520                         ClearTran();
521                     }
522                 }
523             }
524             catch (Exception)
525             {
526                 throw;
527             }
528             finally
529             {
530                 ClearTran();
531             }
532         }
533         #endregion
534 
535         #region 根据对象生成更新语句
536         /// <summary>
537         /// 获取更新语句
538         /// </summary>
539         /// <typeparam name="TResult"></typeparam>
540         /// <param name="TableName">表名</param>
541         /// <param name="IndexFieldName">主键ID</param>
542         /// <returns></returns>
543         public string GetUpdateString<TResult>(string TableName, string IndexFieldName) where TResult : class,new()
544         {
545             string rt = "update " + TableName + " set";
546             Type t = typeof(TResult);
547             Array.ForEach<System.Reflection.PropertyInfo>(t.GetProperties(), p =>
548             {
549                 if (p.Name != IndexFieldName) rt += " " + p.Name + " = @" + p.Name + " ,";
550             });
551             rt = rt.Substring(0, rt.Length - 2);
552             if (IndexFieldName != null)
553                 rt += " where " + IndexFieldName + " = @" + IndexFieldName;
554             return rt;
555         }
556         #endregion
557 
558         #region 根据对象生成插入语句
559         /// <summary>
560         /// 获取插入语句
561         /// </summary>
562         /// <typeparam name="TResult"></typeparam>
563         /// <param name="TableName">表名</param>
564         /// <param name="IndexFieldName">主键ID</param>
565         /// <returns></returns>
566         public string GetInsertString<TResult>(string TableName, string IndexFieldName) where TResult : class,new()
567         {
568             string rt = "insert into " + TableName + " (";
569             Type t = typeof(TResult);
570             Array.ForEach<System.Reflection.PropertyInfo>(t.GetProperties(), p =>
571             {
572                 if (p.Name != IndexFieldName) rt += p.Name + " , ";
573             });
574             rt = rt.Substring(0, rt.Length - 3);
575             rt += ") values (";
576             Array.ForEach<System.Reflection.PropertyInfo>(t.GetProperties(), p =>
577             {
578                 if (p.Name != IndexFieldName)
579                     rt += "@" + p.Name + " , ";
580             });
581             rt = rt.Substring(0, rt.Length - 3);
582             rt += ")";
583             return rt;
584         }
585         #endregion
586 
587         #region 对象操作
588         /// <summary>
589         /// 将对象插入到数据库
590         /// </summary>
591         /// <typeparam name="T">对象类型</typeparam>
592         /// <param name="model">对象</param>
593         /// <param name="TableName">表名</param>
594         /// <param name="IndexFieldName">主键ID</param>
595         /// <returns></returns>
596         public bool InsertModel<T>(T model, string TableName, string IndexFieldName) where T : class,new()
597         {
598             this.CommandText = GetInsertString<T>(TableName, IndexFieldName);
599             this.AddParameters<T>(model);
600             return this.ExecuteNonQuery() > 0;
601         }
602 
603         /// <summary>
604         /// 将对象更新到数据库
605         /// </summary>
606         /// <typeparam name="T">对象类型</typeparam>
607         /// <param name="model">对象</param>
608         /// <param name="TableName">表名</param>
609         /// <param name="IndexFieldName">主键ID</param>
610         /// <returns></returns>
611         public bool UpdateModel<T>(T model, string TableName, string IndexFieldName) where T : class,new()
612         {
613             this.CommandText = GetUpdateString<T>(TableName, IndexFieldName);
614             this.AddParameters<T>(model);
615             return this.ExecuteNonQuery() > 0;
616         }
617         #endregion
618 
619         #region 数据库静态方法
620 
621         #region 生成查询字符串
622         /// <summary>
623         /// 返回SQLSERVER连接字符串
624         /// </summary>
625         /// <param name="serverIp">服务器IP</param>
626         /// <param name="uid">用户名</param>
627         /// <param name="pwd">密码</param>
628         /// <param name="catalog">库名</param>
629         /// <param name="timeout">超时时间</param>
630         /// <returns></returns>
631         public static string GetSQLConnectionString(string serverIp, string uid, string pwd, string catalog, int timeout)
632         {
633             return string.Format("Server={0};User ID={1};PWD={2};Initial Catalog={3};Connect TimeOut={4};", serverIp, uid, pwd, catalog, timeout.ToString());
634         }
635 
636         /// <summary>
637         /// 返回Mdb连接字符串
638         /// </summary>
639         /// <param name="filePath">数据库路径</param>
640         /// <param name="password">数据库密码</param>
641         /// <returns></returns>
642         public static string GetMdbConnectionString(string filePath, string password)
643         {
644             return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Persist Security Info=False;Jet OLEDB:Database Password={1}", filePath, password);
645         }
646 
647         /// <summary>
648         /// 返回SQLite连接字符串
649         /// </summary>
650         /// <param name="filePath">数据库路径</param>
651         /// <returns></returns>
652         public static string GetSQLiteConnectionString(string filePath)
653         {
654             return string.Format("Data Source={0}", filePath);
655         }
656         #endregion
657 
658         #endregion
659 
660         #region 好玩的
661 
662         int valueCount = 0;
663 
664         public DB Select(string fieldName)
665         {
666             this.CommandText = "select " + fieldName;
667             return this;
668         }
669 
670         public DB Update(string tableName)
671         {
672             this.CommandText = "update " + (this.DbType == DBType.SQLSERVER ? "" : "from ") + tableName;
673             return this;
674         }
675 
676         public DB Insert(string tableName, string[] fieldNames, object[] values)
677         {
678             if (fieldNames.Length != values.Length)
679                 throw new ArgumentException("参数fieldNames与values的长度必须一致!");
680             this.CommandText = "insert into " + tableName + " (";
681             foreach (var fieldName in fieldNames)
682             {
683                 this.CommandText += fieldName + " , ";
684             }
685             this.CommandText = this.CommandText.Substring(0, this.CommandText.Length - 3);
686             this.CommandText += ") values (";
687             foreach (var fieldName in fieldNames)
688             {
689                 this.CommandText += "@" + fieldName + " , ";
690             }
691             this.CommandText = this.CommandText.Substring(0, this.CommandText.Length - 3);
692             this.CommandText += ")";
693             this.AddParameters(fieldNames, values);
694             return this;
695         }
696 
697         public DB Delete(string tableName)
698         {
699             this.CommandText = "delete " + tableName;
700             return this;
701         }
702 
703         public DB Set(string fieldName, object value)
704         {
705             AppendSet(fieldName);
706             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
707             return this;
708         }
709 
710         public DB Top(int count)
711         {
712             this.CommandText = this.CommandText.Insert(7, " top " + count.ToString());
713             return this;
714         }
715 
716         public DB From(string tableName)
717         {
718             this.CommandText += " from " + tableName;
719             return this;
720         }
721 
722         public DB WhereIs(string fieldName, object value)
723         {
724             AppendWhere();
725             this.CommandText += " " + fieldName + " = @" + fieldName + valueCount.ToString();
726             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
727             return this;
728         }
729 
730         public DB WhereNotIs(string fieldName, object value)
731         {
732             AppendWhere();
733             this.CommandText += " " + fieldName + (this.DbType == DBType.MDB ? "<> @" : " != @") + fieldName + valueCount.ToString();
734             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
735             return this;
736         }
737 
738         public DB WhereBig(string fieldName, object value)
739         {
740             AppendWhere();
741             this.CommandText += " " + fieldName + " > @" + fieldName + valueCount.ToString();
742             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
743             return this;
744         }
745 
746         public DB WhereSmall(string fieldName, object value)
747         {
748             AppendWhere();
749             this.CommandText += " " + fieldName + " < @" + fieldName + valueCount.ToString();
750             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
751             return this;
752         }
753 
754         public DB WhereLike(string fieldName, object value)
755         {
756             AppendWhere();
757             this.CommandText += " " + fieldName + " like @" + fieldName + valueCount.ToString();
758             this.AddParameter("@" + fieldName + valueCount.ToString(), value);
759             return this;
760         }
761 
762         public DB WhereBetween(string fieldName, object value1, object value2)
763         {
764             AppendWhere();
765             this.CommandText += " " + fieldName + " between @" + fieldName + valueCount.ToString();
766             this.AddParameter("@" + fieldName + valueCount.ToString(), value1);
767             AppendWhere();
768             this.CommandText += " @" + fieldName + valueCount.ToString();
769             this.AddParameter("@" + fieldName + valueCount.ToString(), value2);
770             return this;
771         }
772 
773         public enum OrderType
774         {
775             DESC,
776             ASC
777         }
778         public DB OrderBy(string fieldName, OrderType orderby)
779         {
780             this.CommandText += " order by " + fieldName + " " + orderby.ToString();
781             return this;
782         }
783 
784         /// <summary>
785         /// 分页
786         /// </summary>
787         /// <param name="page">从1开始</param>
788         /// <param name="pageSize">页大小</param>
789         /// <returns></returns>
790         public DB Limit(int page, int pageSize)
791         {
792             switch (this.DbType)
793             {
794                 case DBType.MDB:
795 
796                     break;
797                 case DBType.SQLITE:
798                     this.CommandText += " limit @page , @pageSize";
799                     this.AddParameter("@page", page - 1);
800                     this.AddParameter("@pageSize", (page - 1) * pageSize);
801                     break;
802                 case DBType.SQLSERVER:
803 
804                     break;
805             }
806             return this;
807         }
808 
809         void AppendWhere()
810         {
811             valueCount++;
812             if (this.CommandText.Contains(" where "))
813             {
814                 this.CommandText += " and";
815             }
816             else
817                 this.CommandText += " where";
818         }
819 
820         void AppendSet(string fieldName)
821         {
822             valueCount++;
823             if (this.CommandText.Contains(" set "))
824                 this.CommandText += " , " + fieldName + " = @" + fieldName + valueCount.ToString();
825             else
826                 this.CommandText += " set " + fieldName + " = @" + fieldName + valueCount.ToString();
827         }
828         #endregion
829     }

 

使用案例7个:

使用案例
  1     class Test
  2     {
  3         #region 静态方法,获取数据库操作对象
  4         private readonly DB GetDB()
  5         {
  6             return new DB(DB.DBType.SQLSERVER, DB.GetSQLConnectionString(".", "sa", "sa", "Post", 30));
  7         }
  8         #endregion
  9 
 10         #region 实体类
 11         class Model
 12         {
 13             public int Id { get; set; }
 14             public string PostNum { get; set; }
 15         }
 16         #endregion
 17 
 18         #region 获取条目
 19         public int GetCount()
 20         {
 21             using (var db = GetDB())
 22             {
 23                 return db
 24                     .Select("count(*)")
 25                     .From("PostTable")
 26                     .ExecuteScalarToInt();
 27             }
 28         }
 29         #endregion
 30 
 31         #region 获取实体列表
 32         public List<Model> GetList(int count)
 33         {
 34             using (var db = GetDB())
 35             {
 36                 var dt = db.Select("Id,PostNum").From("PostTable").Top(count).ExecuteDataTable();
 37                 var list = new List<Model>();
 38                 foreach (System.Data.DataRow row in dt.Rows)
 39                 {
 40                     Model model = new Model
 41                     {
 42                         Id = int.Parse(row["Id"].ToString()),
 43                         PostNum = row["PostNum"].ToString()
 44                     };
 45                     list.Add(model);
 46                 }
 47                 return list;
 48             }
 49         }
 50         #endregion
 51 
 52         #region 插入实体方法1
 53         public bool Insert(Model model)
 54         {
 55             using (var db = GetDB())
 56             {
 57                 return db.InsertModel(model, "PostTable", "Id");
 58             }
 59         }
 60         #endregion
 61 
 62         #region 插入实体方法2
 63         public bool Insert(int id, string postNum)
 64         {
 65             using (var db = GetDB())
 66             {
 67                 return db.Insert("PostTable",
 68                     new string[] { "Id", "PostNum" },
 69                     new object[] { id, postNum })
 70                     .ExecuteNonQuery() > 0;
 71             }
 72         }
 73         #endregion
 74 
 75         #region 删除
 76         public bool Delete(int id)
 77         {
 78             using (var db = GetDB())
 79             {
 80                 return db.Delete("PostTable").WhereIs("Id", id).ExecuteNonQuery() > 0;
 81             }
 82         }
 83         #endregion
 84 
 85         #region 更新实体方法1
 86         public bool Update(Model model)
 87         {
 88             using (var db = GetDB())
 89             {
 90                 return db.UpdateModel(model, "PostTable", "Id");
 91             }
 92         }
 93         #endregion
 94 
 95         #region 更新实体方法2
 96         public bool Update(int id, string postNum)
 97         {
 98             using (var db = GetDB())
 99             {
100                 return db
101                     .Update("PostTable")
102                     .Set("PostNum", postNum)
103                     .WhereIs("Id", id)
104                     .ExecuteNonQuery() > 0;
105             }
106         }
107         #endregion
108 
109         #region 查询实体
110         public Model GetModel(int id)
111         {
112             using (var db = GetDB())
113             {
114                 var dt = db.Select("Id,PostNum").From("PostTable").WhereIs("Id", id).ExecuteDataTable();
115                 if (dt.Rows.Count > 0)
116                 {
117                     Model model = new Model
118                     {
119                         Id = int.Parse(dt.Rows[0].ToString()),
120                         PostNum = dt.Rows[0].ToString()
121                     };
122                     return model;
123                 }
124                 else
125                     return null;
126             }
127         }
128         #endregion
129 
130     }

简单举了几个例子,其他的大家可以自己在使用中体会!(献丑了,高手飘过哦~~呵呵!)

posted @ 2012-10-09 17:42  Crazy Coder  阅读(1374)  评论(4编辑  收藏  举报