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

Логин

Email:
  Пароль:

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

Поиск

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

Книги по теме

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

Исходник

Автор:

Max Pro

 
Название:

Работа с любой БД от Великого Учителя (ссылка на форум)

Дата: 27 June 2008
Описание: Смотри ссылку http://aspnetmania.com/Forums/ForumMessage/402480.html 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=231]Работа с любой БД от Великого Учителя (ссылка на форум)[/CODEPOST]
Оценка: Проголосовало 2 посетителей, средняя оценка 3.00
Оценить:
Оригинальный текст ссылки (по состоянию на 27.06.2008 11:30)
------------------------------------------------------------
Вариант а - реализовать свой провайдер для работы с данными и соотв писать реализации для SQL и Oracle отдельно.
Вариант б - общий. У меня уложился примерно в такой набор методов:

protected string connStr;
protected string providerFactory;
public CommonDB(string ConnectionStringName)
{
connStr = ConfigurationManager.ConnectionStrings[ConnectionStringName] != null ? ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString : "";
providerFactory = ConfigurationManager.ConnectionStrings[ConnectionStringName] != null ? ConfigurationManager.ConnectionStrings[ConnectionStringName].ProviderName : "";
Init();
}
protected static DbConnection GetConnection(string factory, string str)
{
DbConnection ret = DbProviderFactories.GetFactory(factory).CreateConnection();
ret.ConnectionString = str;
return ret;
}
public static DbCommand GetCommand(DbConnection conn, string command)
{
DbCommand ret = conn.CreateCommand();
ret.CommandText = command;
ret.CommandType = CommandType.StoredProcedure;
ret.CommandTimeout = 30;
return ret;
}
protected static DbParameter GetParameter(string factory, string name, object value)
{
DbParameter ret = DbProviderFactories.GetFactory(factory).CreateParameter();
ret.ParameterName = name;
ret.Value = value;
return ret;
}

Ну и пример использования:

public virtual object Set(DbConnection myConn, DbTransaction myTran)
{
string key = GetKey(this.ID);
SetPrepare();
DbCommand myCmd = GetCommand(myConn, _setProcName);
myCmd.CommandTimeout = 180;
if (myTran != null)
myCmd.Transaction = myTran;
foreach (string field in fields)
{
if (_row.ContainsKey(field) && _row[field] != null && _row[field] != Convert.DBNull)
myCmd.Parameters.Add(GetParameter(providerFactory, "@" + field, _row[field]));
}
DbParameter ret = GetParameter(providerFactory, "RETURN_VALUE", null);
ret.Direction = ParameterDirection.ReturnValue;
myCmd.Parameters.Add(ret);
myConn.Open();
myCmd.ExecuteNonQuery();

object retValue = ret.Value;
return retValue;
}

Вернуться к списку исходников в категории ADO.NET
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта