Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
using System;
using System.Data;
namespace DotNetDataProviderTemplate
{
public class TemplateConnection : IDbConnection
{
private ConnectionState m_state;
private string m_sConnString;
// Use the "SampleDb" class to simulate a database connection.
SampleDb m_sampleDb;
// Always have a default constructor.
public TemplateConnection()
{
// Initialize the connection object into the closed state.
m_state = ConnectionState.Closed;
/*
* Obtain a connection to the database. In this case,
* use the SampleDb class to simulate a connection to
* a real database.
*/
m_sampleDb = new SampleDb();
}
// Have a constructor that takes a connection string.
public TemplateConnection(string sConnString)
{
// Initialize the connection object into a closed state.
m_state = ConnectionState.Closed;
}
/****
* IMPLEMENT THE REQUIRED PROPERTIES.
****/
public string ConnectionString
{
get
{
// Always return exactly what the user set.
// Security-sensitive information may be removed.
return m_sConnString;
}
set
{
m_sConnString = value;
}
}
public int ConnectionTimeout
{
get
{
// Returns the connection time-out value set in the connection
// string. Zero indicates an indefinite time-out period.
return 0;
}
}
public string Database
{
get
{
// Returns an initial database as set in the connection string.
// An empty string indicates not set - do not return a null reference.
return "";
}
}
public ConnectionState State
{
get { return m_state; }
}
/****
* IMPLEMENT THE REQUIRED METHODS.
****/
public IDbTransaction BeginTransaction()
{
throw new NotSupportedException();
}
public IDbTransaction BeginTransaction(IsolationLevel level)
{
throw new NotSupportedException();
}
public void ChangeDatabase(string dbName)
{
/*
* Change the database setting on the back-end. Note that it is a method
* and not a property because the operation requires an expensive
* round trip.
*/
}
public void Open()
{
/*
* Open the database connection and set the ConnectionState
* property. If the underlying connection to the server is
* expensive to obtain, the implementation should provide
* implicit pooling of that connection.
* If the provider also supports automatic enlistment in
* distributed transactions, it should enlist during Open().
*/
m_state = ConnectionState.Open;
}
public void Close()
{
/*
* Close the database connection and set the ConnectionState
* property. If the underlying connection to the server is
* being pooled, Close() will release it back to the pool.
*/
m_state = ConnectionState.Closed;
}
public IDbCommand CreateCommand()
{
// Return a new instance of a command object.
return new TemplateCommand();
}
/*
* Implementation specific properties / methods.
*/
internal SampleDb SampleDb
{
get { return m_sampleDb; }
}
void IDisposable.Dispose()
{
this.Dispose(true);
System.GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
/*
* Dispose of the object and perform any cleanup.
*/
if (m_state == ConnectionState.Open)
this.Close();
}
}
}