|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
Пример уничицированной библиотеки для работы с БД |
|
Дата:
|
01 July 2003 |
|
Описание: |
Пример уничицированной библиотеки для работы с БД |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=44]Пример уничицированной библиотеки для работы с БД[/CODEPOST] |
| Оценка: |
Проголосовало 8 посетителей, средняя оценка 4.50 |
| Оценить: |
|
1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Data.OleDb;
5 using System.Data.SqlTypes;
6 using System.Collections;
7 using System.Text.RegularExpressions;
8 using System.Configuration;
9
10 namespace CDBObjects
11 {
12 /// <summary>
13 /// Класс для формирование добавления или обновлени записей в БД
14 /// что-то вроде ассоциативного массива.
15 /// </summary>
16 public class Arguments
17 {
18 /// <summary>
19 /// Коструктор
20 /// </summary>
21 public Arguments()
22 {
23 this._fields = new ArrayList();
24 this._val = new ArrayList();
25 }
26 /// <summary>
27 /// Закрытая переменная имен столбцов
28 /// </summary>
29 private ArrayList _fields;
30
31 /// <summary>
32 /// закрытая переменная значений
33 /// </summary>
34 private ArrayList _val;
35
36 /// <summary>
37 /// Функция установки значений
38 /// </summary>
39 /// <param name="f">Имя поля</param>
40 /// <param name="v">Значение</param>
41 public void SetArgument(string f, string v)
42 {
43 if (f.Length > 0)
44 {
45 this._fields.Add(f.ToString());
46 this._val.Add(v);
47 } else throw new ArgumentNullException("Some argument is empty.");
48 }
49
50 /// <summary>
51 /// Функция установки полей
52 /// </summary>
53 /// <param name="f">ArrayList[i] = field_name</param>
54 public void SetFields(ArrayList f)
55 {
56 if (f.Count > 0)
57 {
58 for (int i = 0; i < f.Count; i++)
59 {
60 this._fields.Add(f[i]);
61 }
62 } else throw (new ArgumentOutOfRangeException("Array of field is Empty."));
63 }
64
65 /// <summary>
66 /// Функция установки полей
67 /// </summary>
68 /// <param name="f">строка вида 'field1,filed2, filed3,...,filedN'</param>
69 public void SetFields(string f)
70 {
71 if (f.Length > 0)
72 {
73 Regex r = new Regex(",");
74 string[] strFields = r.Split(f);
75 for (int i = 0; i < strFields.Length; i++)
76 {
77 this._fields.Add(strFields[i]);
78 }
79 } else throw (new ArgumentOutOfRangeException("String of field is Empty."));
80 }
81
82 /// <summary>
83 /// Массив имен полей
84 /// </summary>
85 public ArrayList fields
86 {
87 get
88 {
89 return _fields;
90 }
91 }
92
93 /// <summary>
94 /// Массив значений
95 /// </summary>
96 public ArrayList val
97 {
98 get
99 {
100 return _val;
101 }
102 }
103
104 }
105 /// <summary>
106 /// Класс констант
107 /// </summary>
108 public abstract class Const
109 {
110 /// <summary>
111 /// Перечисление типов БД
112 /// </summary>
113 public enum endbtype
114 {
115 /// <summary>
116 /// Ддля БД Access
117 /// </summary>
118 Access = 1,
119 /// <summary>
120 /// For MS SQL
121 /// </summary>
122 SQL,
123 /// <summary>
124 /// For Oracle
125 /// </summary>
126 Oracle
127 };
128
129 /// <summary>
130 /// Перечисдение типов возращаемых объектов.
131 /// </summary>
132 public enum enrtype
133 {
134 /// <summary>
135 /// Return DataSet object
136 /// </summary>
137 DataSet = 1,
138 /// <summary>
139 /// Return DataReader object
140 /// </summary>
141 DataReader
142 };
143 }
144
145 ///<summary>
146 ///Определяем Интерфейс CDBobject
147 ///</summary>
148 public interface ICDBObject
149 {
150 /// <summary>
151 /// Объявляем открытую переменную коннекшена.
152 /// </summary>
153 string strConn
154 {
155 get;
156 set;
157 }
158
159 /// <summary>
160 /// Объявляем открытую переменную с именем
161 /// используемой табицы.
162 /// </summary>
163 string strTable
164 {
165 get;
166 set;
167 }
168
169 /// <summary>
170 /// Объявляем метод добавления данных для одной таблицы
171 /// </summary>
172 /// <param name="tvalue">Массив входных значений для ввода в новой записи</param>
173 /// <returns>Возвращает записи</returns>
174 /// <example>
175 /// Arguments NewValue = New Arguments();
176 /// NewList.SetArgument("name", "John Doe");
177 /// NewList.SetArgument("age", 25);
178 /// int id = Add(NewList);
179 /// </example>
180 int Add(Arguments tvalue);
181
182 /// <summary>
183 /// Объявляем метод обновления данных для одной таблицы
184 /// </summary>
185 /// <param name="id">id изменяемой записи.</param>
186 /// <param name="tvalue">Массив входных значений для обновляеммой записи записи</param>
187 /// <returns>Возвращает 0 или код ошибки</returns>
188 /// <example>
189 /// Arguments NewValue = New Arguments();
190 /// NewList.SetArgument("name", "John Doe");
191 /// NewList.SetArgument("age", 25);
192 /// int code = Add(5,NewList);
193 /// </example>
194 void Update (int id, Arguments tvalue);
195
196 /// <summary>
197 /// Объявляем метод удаления записей по указанному id для одной таблицы
198 /// </summary>
199 /// <param name="id">ID записи</param>
200 /// <returns>Возвращает 0 или код ошибки</returns>
201 void Delete(int id);
202
203 /// <summary>
204 /// Объявляем метод удаления нескольких записей по указанному id для одной таблицы
205 /// </summary>
206 /// <param name="id">массив ID</param>
207 /// <returns>Возвращает 0 или код ошибки</returns>
208 void MultDelete (int[] id);
209
210 /// <summary>
211 /// Метод возвращает записи все записи из БД
212 /// </summary>
213 /// <param name="filter">фильтр по которому выбираются данные</param>
214 /// <returns>объект RecordSet or DataReader</returns>
215 object GetAll(string filter);
216 }
217 /// <summary>
218 /// Summary description for CDBObject.
219 /// </summary>
220 public class CDBObject : ICDBObject, IDisposable
221 {
222 /// <summary>
223 /// Свойство показывающее состояние подключения к БД
224 /// </summary>
225 private bool _IsConnection;
226 /// <summary>
227 /// Свойство показывающее состояние подключения к БД (read-only)
228 /// </summary>
229 public bool IsConnection
230 {
231 get
232 {
233 return this._IsConnection;
234 }
235 }
236 /// <summary>
237 /// Объявляем защищенную переменную conn
238 /// </summary>
239 private string _strConn;
240 /// <summary>
241 /// Объявляем открытую переменную соединения
242 /// </summary>
243
244 public string strConn
245 {
246 get
247 {
248 return _strConn;
249 }
250 set
251 {
252 _strConn = value;
253 }
254 }
255 /// <summary>
256 /// Защищенное свойство типа БД
257 /// </summary>
258 private Const.endbtype _enDBType;
259 /// <summary>
260 /// Открытое свойство типа БД
261 /// </summary>
262 public Const.endbtype enDBType
263 {
264 get
265 {
266 return _enDBType;
267 }
268 set
269 {
270 _enDBType = value;
271 }
272 }
273 /// <summary>
274 /// Защищенное свойство типа возвращаеммого объекта.
275 /// </summary>
276 private Const.enrtype _enRType;
277 /// <summary>
278 /// Открытое св-во возв. объекта
279 /// </summary>
280 public Const.enrtype enRType
281 {
282 get
283 {
284 return _enRType;
285 }
286 set
287 {
288 _enRType = value;
289 }
290 }
291 /// <summary>
292 /// закрытое св-во имени таблицы
293 /// </summary>
294 private string _strTable;
295 /// <summary>
296 /// открытое св-во имени таблицы.
297 /// </summary>
298 public string strTable
299 {
300 get
301 {
302 return _strTable;
303 }
304 set
305 {
306 _strTable = value;
307 }
308 }
309
310 /// <summary>
311 /// объект соединения c БД MS SQL.
312 /// </summary>
313 public SqlConnection sqlConn;
314 /*{
315 get
316 {
317 return sqlConn;
318 }
319 set
320 {
321 if (value is SqlConnection) sqlConn = value;
322 }
323 }*/
324 /// <summary>
325 /// объект для соединения с БД через OleDB
326 /// </summary>
327 public OleDbConnection oleConn;
328 /* {
329 get
330 {
331 return oleConn;
332 }
333 set
334 {
335 if (value is OleDbConnection) oleConn = value;
336 }
337 }*/
338
339 /// <summary>
340 /// Коструктор по умолчанию
341 /// </summary>
342 public CDBObject()
343 {
344 this._strConn = "";
345 this._enDBType = Const.endbtype.SQL;
346 this._enRType = Const.enrtype.DataSet;
347 this._strTable = "";
348 this._IsConnection = false;
349 }
350 /// <summary>
351 /// Кострутор
352 /// </summary>
353 /// <param name="conn">строка соединения</param>
354 /// <param name="dbtype">тип БД</param>
355 public CDBObject(string conn, Const.endbtype dbtype)
356 {
357 this.strConn = conn;
358 this.enDBType = dbtype;
359 this._enRType = Const.enrtype.DataSet;
360 this._strTable = "";
361 this._IsConnection = false;
362 }
363
364 /// <summary>
365 /// Коструктор
366 /// </summary>
367 /// <param name="conn">строка соедидения</param>
368 /// <param name="dbtype">тип БД</param>
369 /// <param name="rtype">тип возвращяемого объекта</param>
370 public CDBObject(string conn, Const.endbtype dbtype, Const.enrtype rtype)
371 {
372 this.strConn = conn;
373 this.enDBType = dbtype;
374 this.enRType = rtype;
375 this.strTable = "";
376 this._IsConnection = false;
377 }
378
379 /// <summary>
380 /// Коструктор
381 /// </summary>
382 /// <param name="conn">строка соедидения</param>
383 /// <param name="dbtype">тип БД</param>
384 /// <param name="rtype">тип возвращяемого объекта</param>
385 /// <param name="table">имя используемой таблицы</param>
386 public CDBObject (string conn, Const.endbtype dbtype, Const.enrtype rtype, string table)
387 {
388 this.strConn = conn;
389 this.enDBType = dbtype;
390 this.enRType = rtype;
391 this.strTable = table;
392 this._IsConnection = false;
393 GetConnection();
394 }
395
396 /// <summary>
397 /// Метод для соединения с БД.
398 /// </summary>
399 private void GetConnection()
400 {
401 string sConn = "";
402 if (this._strConn.Length > 0) sConn = this._strConn;
403 else if (ConfigurationSettings.AppSettings["strConn"] != null) sConn = ConfigurationSettings.AppSettings["strConn"];
404 else throw(new ArgumentNullException("strConn", "Connection string is empty."));
405 if (this._strTable.Length > 0)
406 {
407 if (this._enDBType == Const.endbtype.SQL)
408 {
409 this.sqlConn = new SqlConnection(sConn);
410 this.sqlConn.Open();
411 this._IsConnection = true;
412 }
413 else if ((this._enDBType == Const.endbtype.Access) || (this._enDBType == Const.endbtype.Oracle))
414 {
415 this.oleConn = new OleDbConnection(sConn);
416 this.oleConn.Open();
417 this._IsConnection = true;
418 } else throw (new ArgumentOutOfRangeException("enRType","Тип БД не должен быть пустым."));
419 } else throw (new ArgumentOutOfRangeException("strTable","Имя таблицы не должно быть пустым"));
420 }
421
422 /// <summary>
423 /// Объявляем метод добавления данных для одной таблицы
424 /// </summary>
425 /// <param name="obj">Массив входных значений для ввода в новой записи</param>
426 /// <returns>Возвращает 0 или код ошибки</returns>
427 /// <example>
428 /// Arguments NewValue = New Arguments();
429 /// NewList.SetArgument("name", "John Doe");
430 /// NewList.SetArgument("age", 25);
431 /// int code = Add(NewList);
432 /// </example>
433 public int Add(Arguments obj)
434 {
435 if (!this._IsConnection) this.GetConnection();
436 int ret = -1;
437 if ((obj.fields.Count > 0) && (obj.val.Count > 0))
438 {
439 ArrayList field = new ArrayList();
440 ArrayList val = new ArrayList();
441 SqlCommand sqlUpdate;
442 OleDbCommand oleUpdate;
443 field = obj.fields;
444 val = obj.val;
445 string f = "", v = "", sql = "";
446 for (int i = 0; i < field.Count; i++)
447 {
448 f += field[i] + ", ";
449 v += "'" + val[i] + "', ";
450 }
451 f = f.Substring(0, (f.Length-2));
452 v = v.Substring(0, (v.Length-2));
453 sql = "INSERT INTO " + this._strTable.ToString() + " (" + f.ToString() + ") VALUES (" + v.ToString() + ")";
454 if (this._enDBType == Const.endbtype.SQL)
455 {
456 sql += " SELECT @@IDENTITY AS 'ID'";
457 sqlUpdate = new SqlCommand(sql, this.sqlConn);
458 sqlUpdate.CommandType = CommandType.Text;
459 SqlDataReader dtrID = sqlUpdate.ExecuteReader();
460 while (dtrID.Read())
461 {
462 if (!dtrID.IsDBNull(0) && (dtrID.GetName(0) == "ID") && (dtrID.GetValue(0).GetType().ToString() == "System.Decimal"))
463 ret = decimal.ToInt32(dtrID.GetDecimal(0));
464 else
465 ret = -1;
466 }
467 return ret;
468 }
469 else
470 {
471 oleUpdate = new OleDbCommand(sql, this.oleConn);
472 oleUpdate.CommandType = CommandType.Text;
473 oleUpdate.ExecuteNonQuery();
474 return 0;
475 }
476 } else throw (new ArgumentNullException("Argument is null"));
477 }
478
479 /// <summary>
480 /// Объявляем метод удаления записей по указанному id для одной таблицы
481 /// </summary>
482 /// <param name="id">ID записи</param>
483 /// <returns>Возвращает 0 или код ошибки</returns>
484 public void Delete(int id)
485 {
486 if (!this._IsConnection) this.GetConnection();
487 if (id > 0)
488 {
489 string sql = "DELETE FROM " + this._strTable.ToString() + " WHERE id = " + id.ToString();
490 if (this._enDBType == Const.endbtype.SQL)
491 {
492 SqlCommand sqlDelete = new SqlCommand(sql, this.sqlConn);
493 sqlDelete.ExecuteNonQuery();
494 }
495 else
496 {
497 OleDbCommand oleDelete = new OleDbCommand(sql, this.oleConn);
498 oleDelete.ExecuteNonQuery();
499 }
500 } else throw (new ArgumentOutOfRangeException("CDBObject.Delete; ID is empty."));
501 }
502
503 /// <summary>
504 /// Объявляем метод удаления нескольких записей по указанному id для одной таблицы
505 /// </summary>
506 /// <param name="id">массив ID</param>
507 /// <returns>Возвращает 0 или код ошибки</returns>
508 public void MultDelete(int[] id)
509 {
510 if (!this._IsConnection) this.GetConnection();
511 if (id.Length > 0) {
512 string filter = "", sql = "";
513 for (int i = 0; i < id.Length; i++)
514 {
515 if (id[i] > 0)
516 {
517 filter += "id = " + id[i] + " OR ";
518 } else throw new ArgumentNullException("CDBObject.MultDelete; ID is null");
519 }
520 filter = filter.Substring(0, (filter.Length-4));
521 sql = "DELETE FROM " + this._strTable.ToString() + " WHERE " + filter.ToString();
522 if (this._enDBType == Const.endbtype.SQL)
523 {
524 SqlCommand sqlDelete = new SqlCommand(sql, this.sqlConn);
525 sqlDelete.ExecuteNonQuery();
526 }
527 else
528 {
529 OleDbCommand oleDelete = new OleDbCommand(sql, this.oleConn);
530 oleDelete.ExecuteNonQuery();
531 }
532 } else throw (new ArgumentOutOfRangeException("CDBObject.MultDetele; Array of ID is empty."));
533 }
534 /// <summary>
535 /// Функция удаление записей по определенным условиям
536 /// </summary>
537 /// <param name="o">Объект аргументов (type: Arguments)</param>
538 public void Delete(Arguments o)
539 {
540 if (!this._IsConnection) this.GetConnection();
541 if ((o.fields.Count > 0) && (o.val.Count > 0))
542 {
543 if (o.fields.Count == o.val.Count)
544 {
545 if (this._strTable.Trim() != "")
546 {
547 string sql = "DELETE FROM " + this._strTable.ToString() + " WHERE ";
548 for (int i = 0; i < o.fields.Count; i++) sql += o.fields[i] + " = '" + o.val[i] + "', ";
549 sql = sql.Substring(0, (sql.Length - 2));
550 if (this._enDBType == Const.endbtype.SQL)
551 {
552 SqlCommand cmdDel = new SqlCommand(sql, this.sqlConn);
553 cmdDel.ExecuteNonQuery();
554 }
555 else
556 {
557 OleDbCommand cmdDel = new OleDbCommand(sql, this.oleConn);
558 cmdDel.ExecuteNonQuery();
559 }
560 } else throw (new ArgumentOutOfRangeException("DeleteCustom => Table name is Empty."));
561 } else throw (new ArgumentOutOfRangeException("DeleteCustom => field.count != values.count"));
562 } else throw (new ArgumentOutOfRangeException("DeleteCustom => Arguments in Empty"));
563 }
564 /// <summary>
565 /// Удаление всех записей из таблицы.
566 /// </summary>
567 public void DeleteAll()
568 {
569 if (!this._IsConnection) this.GetConnection();
570 if (this._strTable.Trim() != "")
571 {
572 string sql = "DELETE FROM " + this._strTable.ToString();
573 if (this._enDBType == Const.endbtype.SQL)
574 {
575 SqlCommand cmdDel = new SqlCommand(sql, this.sqlConn);
576 cmdDel.ExecuteNonQuery();
577 }
578 else
579 {
580 OleDbCommand cmdDel = new OleDbCommand(sql, this.oleConn);
581 cmdDel.ExecuteNonQuery();
582 }
583 } else throw (new ArgumentOutOfRangeException("DeleteCustom => Table name is Empty."));
584 }
585 /// <summary>
586 /// Объявляем метод обновления данных для одной таблицы
587 /// </summary>
588 /// <param name="id">id изменяемой записи.</param>
589 /// <param name="obj">Массив входных значений для обновляеммой записи (type Arguments)</param>
590 /// <returns>Возвращает 0 или код ошибки</returns>
591 /// <example>
592 /// Arguments NewValue = New Arguments();
593 /// NewList.SetArgument("name", "John Doe");
594 /// NewList.SetArgument("age", 25);
595 /// int code = Update(5,NewList);
596 /// </example>
597 public void Update(int id, Arguments obj)
598 {
599 if (!this._IsConnection) this.GetConnection();
600 if (id > 0)
601 {
602 if ((obj.fields.Count > 0) && (obj.val.Count > 0))
603 {
604 ArrayList field = new ArrayList();
605 ArrayList val = new ArrayList();
606 SqlCommand sqlUpdate;
607 OleDbCommand oleUpdate;
608 field = obj.fields;
609 val = obj.val;
610 string sql = "";
611 for (int i = 0; i < field.Count; i++)
612 {
613 sql += field[i] + " = '" + val[i] + "', ";
614 }
615 sql = sql.Substring(0, (sql.Length-2));
616 sql = "UPDATE " + this._strTable.ToString() + " SET " + sql.ToString() + " WHERE id = " + id.ToString();
617 if (this._enDBType == Const.endbtype.SQL)
618 {
619 sqlUpdate = new SqlCommand(sql, this.sqlConn);
620 sqlUpdate.ExecuteNonQuery();
621 }
622 else
623 {
624 oleUpdate = new OleDbCommand(sql, this.oleConn);
625 oleUpdate.ExecuteNonQuery();
626 }
627 } else throw (new ArgumentOutOfRangeException("Argument is empty"));
628 }
629 else
630 {
631 throw (new ArgumentOutOfRangeException("Function CDBObject.Update. ID is empty"));
632 }
633 }
634
635 /// <summary>
636 /// Функция изменения данных
637 /// </summary>
638 /// <param name="obj1">Объект условия обновления данных</param>
639 /// <param name="obj2">Объект аргументов для обновления</param>
640 /// <example>
641 /// Пример sql запроса
642 /// <code>
643 /// Update table_name SET <parsing ob2> WHERE <parsing obj1>
644 /// </code>
645 /// </example>
646 public void Update(Arguments obj1, Arguments obj2)
647 {
648 if ((obj1.fields.Count > 0) && (obj1.val.Count > 0))
649 {
650 string filter = "";
651 for (int i = 0; i < obj1.fields.Count; i++) filter += obj1.fields[i] + " = '" + obj1.val[i] + "' AND ";
652 filter = filter.Substring(0, (filter.Length - 5));
653 if ((obj2.fields.Count > 0) && (obj2.val.Count > 0))
654 {
655 string arg = "";
656 for (int i = 0; i < obj2.fields.Count; i++) arg += obj2.fields[i] + " = '" + obj2.val[i] + "', ";
657 arg = arg.Substring(0, (arg.Length - 2));
658 string sql = "UPDATE " + this._strTable.ToString() + " SET " + arg + " WHERE " + filter;
659 if (this._enDBType == Const.endbtype.SQL)
660 {
661 SqlCommand cmdUpdate = new SqlCommand(sql, this.sqlConn);
662 cmdUpdate.ExecuteNonQuery();
663 }
664 else
665 {
666 OleDbCommand cmdUpdate = new OleDbCommand(sql, this.oleConn);
667 cmdUpdate.ExecuteNonQuery();
668 }
669 } else throw (new ArgumentOutOfRangeException("Update => Argument for updateting is Empty."));
670 } else throw (new ArgumentOutOfRangeException("Update => Conditions for updateting is Empty."));
671 }
672 /// <summary>
673 /// Функция получения всех полей из БД
674 /// по опрделененному фильтру
675 /// </summary>
676 /// <param name="filter">Фильтр вида "id=5 AND(OR) fname='Vasya'"</param>
677 /// <returns>Object {DataSet | SqlDataReader | OleDbDataReader}</returns>
678 public object GetAll(string filter)
679 {
680 if (!this._IsConnection) this.GetConnection();
681 string sql = "SELECT * FROM " + this._strTable;
682 if (filter.Length > 0)
683 {
684 sql += " WHERE " + filter;
685 } else throw (new ArgumentOutOfRangeException("Filter is Empty"));
686
687 if (this._enDBType == Const.endbtype.SQL)
688 {
689 if (this._enRType == Const.enrtype.DataSet)
690 {
691 SqlDataAdapter dtaGet = new SqlDataAdapter(sql, this.sqlConn);
692 DataSet dtsGet = new DataSet("GetAll");
693 dtaGet.Fill(dtsGet, this._strTable);
694 dtaGet.Dispose();
695 return (object)dtsGet;
696 }
697 else
698 {
699 SqlCommand cmdGet = new SqlCommand(sql, this.sqlConn);
700 SqlDataReader dtrGet = cmdGet.ExecuteReader();
701 return (object)dtrGet;
702 }
703 }
704 else
705 {
706 if (this._enRType == Const.enrtype.DataSet)
707 {
708 OleDbDataAdapter dtaGet = new OleDbDataAdapter(sql, this.oleConn);
709 DataSet dtsGet = new DataSet("GetAll");
710 dtaGet.Fill(dtsGet);
711 dtaGet.Dispose();
712 return (object)dtsGet;
713 }
714 else
715 {
716 OleDbCommand cmdGet = new OleDbCommand(sql, this.oleConn);
717 OleDbDataReader dtrGet = cmdGet.ExecuteReader();
718 return (object)dtrGet;
719 }
720 }
721 }
722
723 /// <summary>
724 /// Функция получения всех полей из БД
725 /// </summary>
726 /// <returns>Object {DataSet | SqlDataReader | OleDbDataReader}</returns>
727 public object GetAll()
728 {
729 if (!this._IsConnection) this.GetConnection();
730 string sql = "SELECT * FROM " + this._strTable;
731 if (this._enDBType == Const.endbtype.SQL)
732 {
733 if (this._enRType == Const.enrtype.DataSet)
734 {
735 SqlDataAdapter dtaGet = new SqlDataAdapter(sql, this.sqlConn);
736 DataSet dtsGet = new DataSet("GetAll");
737 dtaGet.Fill(dtsGet, this._strTable);
738 dtaGet.Dispose();
739 return (object)dtsGet;
740 }
741 else if (this._enRType == Const.enrtype.DataReader)
742 {
743 SqlCommand cmdGet = new SqlCommand(sql, this.sqlConn);
744 SqlDataReader dtrGet = cmdGet.ExecuteReader();
745 return (object)dtrGet;
746 }
747 else throw (new ArgumentNullException("enRType","Тип возращаемого объекта не установлен"));
748 }
749 else
750 {
751 if (this._enRType == Const.enrtype.DataSet)
752 {
753 OleDbDataAdapter dtaGet = new OleDbDataAdapter(sql, this.oleConn);
754 DataSet dtsGet = new DataSet("GetAll");
755 dtaGet.Fill(dtsGet);
756 dtaGet.Dispose();
757 return (object)dtsGet;
758 }
759 else if (this._enRType == Const.enrtype.DataReader)
760 {
761 OleDbCommand cmdGet = new OleDbCommand(sql, this.oleConn);
762 OleDbDataReader dtrGet = cmdGet.ExecuteReader();
763 return (object)dtrGet;
764 }
765 else throw (new ArgumentNullException("enRType","Тип возращаемого объекта не установлен"));
766 }
767 }
768
769 /// <summary>
770 /// Функция для получения кол-ва записей
771 /// </summary>
772 /// <returns>Int Кол-во записей в объекте БД.</returns>
773 public int GetCount()
774 {
775 if (!this._IsConnection) this.GetConnection();
776 string sql = "SELECT COUNT(*) FROM " + this._strTable;
777 if (this._enDBType == Const.endbtype.SQL)
778 {
779 SqlCommand cmdCount = new SqlCommand(sql, this.sqlConn);
780 return (int)cmdCount.ExecuteScalar();
781 }
782 else
783 {
784 OleDbCommand cmdCount = new OleDbCommand(sql, this.oleConn);
785 return (int)cmdCount.ExecuteScalar();
786 }
787 }
788
789 /// <summary>
790 /// Функция для получения кол-ва записей
791 /// </summary>
792 /// <param name="filter">Фильтр вида "id=5 AND(OR) fname='Vasya'"</param>
793 /// <returns>Int Кол-во записей в объекте БД.</returns>
794 public int GetCount(string filter)
795 {
796 if (!this._IsConnection) this.GetConnection();
797 string sql = "SELECT COUNT(*) FROM " + this._strTable;
798 if (filter.Length > 0)
799 {
800 sql += " WHERE " + filter;
801 }
802 else throw (new ArgumentOutOfRangeException("Filter is Empty"));
803 if (this._enDBType == Const.endbtype.SQL)
804 {
805 SqlCommand cmdCount = new SqlCommand(sql, this.sqlConn);
806 return (int)cmdCount.ExecuteScalar();
807 }
808 else
809 {
810 OleDbCommand cmdCount = new OleDbCommand(sql, this.oleConn);
811 return (int)cmdCount.ExecuteScalar();
812 }
813
814 }
815
816 /// <summary>
817 /// Функция выдачи определенных полей из БД ограниченных фильтром
| | | |