Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

darkwolf

 
Название:

Пример уничицированной библиотеки для работы с БД

Дата: 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 		/// Функция выдачи определенных полей из БД ограниченных фильтром