|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
Работа с любой БД от Великого Учителя (ссылка на форум) |
|
Дата:
|
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 |
|
|
 |
 |
 |
 |
|
|