Soyez le premier à donner votre avis sur cette source.
Snippet vu 13 498 fois - Téléchargée 29 fois
using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Text; using System.Runtime.Remoting.Contexts; namespace zAlbumManager { public class SqlManager : IDisposable { //SqlManager est une classe Singleton private static SqlManager sqlmanager = new SqlManager(); private string connectionString = AppSettings.ConnectionString; private SqlConnection sqlConnection; private bool disposed = false; //contient la dernière erreur survenue private string lastError; public string LastError { get { return lastError; } } #region Constructeur private SqlManager() { sqlConnection = new SqlConnection(connectionString); OpenConnection(); } public static SqlManager GetInstance() { return sqlmanager; } #endregion #region ExecuteQuery public SqlQueryResult ExecuteQuery(string query, SqlParameter[] parameters) { lock (this) { SqlQueryResult sqr = new SqlQueryResult(); SqlCommand sqlCommand = new SqlCommand(query, sqlConnection); if (parameters != null) sqlCommand.Parameters.AddRange(parameters); SqlDataReader sqlDataReader = null; try { sqlDataReader = sqlCommand.ExecuteReader(); } catch (Exception e) { lastError = sqr.ErrorMessage = e.Message; sqr.IsSuccess = false; sqr.Error = Error.DataBaseAccessError; } if (sqr.IsSuccess) { sqr.Table = new DataReaderAdapter().FillFromReader(sqlDataReader); sqlDataReader.Close(); } return sqr; } } public SqlQueryResult ExecuteQuery(string query) { return this.ExecuteQuery(query, null); } #endregion #region ExecuteNonQuery public SqlNonQueryResult ExecuteNonQuery(string query, SqlParameter[] parameters) { lock (this) { SqlNonQueryResult snqr = new SqlNonQueryResult(); SqlCommand sqlCommand = new SqlCommand(query, sqlConnection); if (parameters != null) sqlCommand.Parameters.AddRange(parameters); try { //sqlConnection.Open(); snqr.NumberOfRowsAffected = sqlCommand.ExecuteNonQuery(); } catch (Exception e) { lastError = snqr.ErrorMessage = e.Message; snqr.IsSuccess = false; snqr.Error = Error.DataBaseAccessError; } return snqr; } } public SqlNonQueryResult ExecuteNonQuery(string query) { return this.ExecuteNonQuery(query, null); } #endregion #region OpenConnection public void OpenConnection() { try { sqlConnection.Open(); } catch (Exception e) { lastError = e.Message; } } #endregion #region CloseConnection public void CloseConnection() { if (sqlConnection.State != ConnectionState.Closed) sqlConnection.Close(); } #endregion #region IDisposable Membres public void Dispose() { if (!this.disposed) { CloseConnection(); sqlConnection.Dispose(); disposed = true; } GC.SuppressFinalize(this); } #endregion } #region QueryResult public class QueryResult { private bool isSuccess = true; private string errorMessage; private Error error; public Error Error { get { return error; } set { error = value; } } public bool IsSuccess { get { return isSuccess; } set { isSuccess = value; } } public string ErrorMessage { get { return errorMessage; } set { errorMessage = value; } } public override string ToString() { return " - IsSuccess : " + isSuccess + "\n" + " - Error : " + error + "\n" + " - ErrorMessage : " + errorMessage; } } #endregion #region SqlQueryResult public class SqlQueryResult : QueryResult { private DataTable table; public DataTable Table { get { return table; } set { table = value; } } } #endregion #region SqlNonQueryResult public class SqlNonQueryResult : QueryResult { private int numberOfRowsAffected; public int NumberOfRowsAffected { get { return numberOfRowsAffected; } set { numberOfRowsAffected = value; } } } #endregion #region DataReaderAdapter class DataReaderAdapter : DbDataAdapter { public DataTable FillFromReader(IDataReader dataReader) { DataTable dt = new DataTable(); this.Fill(dt, dataReader); return dt; } } #endregion }
21 mars 2007 à 16:02
//private Error error;
//public Error Error { get { return error; } set { error = value; } }
ou encore juste créer une énumération bidon genre :
public enum Error
{
Unknown
}
21 mars 2007 à 13:36
Error 8 The name 'Error' does not exist in the current context F:\Teddy\Visual Studio 2005\Projects\Mail\SqlClassManager\SqlClassManager.cs 102 34 SqlClassManager
Je débute en C# donc je ne sais pas trop d'ou sa vient , je pense qu'il me manque une référence mais je ne sais pas a quoi :s
merci de votre aide
21 août 2006 à 10:11
Cette librairie est plutôt bien faite et performante. Elle permet de travailler avec des DataSet ou des SqlReader.
Le package propose une documentation très claire.
Où la trouver : http://www.microsoft.com/downloads/details.aspx?FamilyID=F63D1F0A-9877-4A7B-88EC-0426B48DF275&displaylang=en
Description par Microsoft :
The Microsoft Data Access Application Block for .NET consists of a single .NET-based assembly, which contains all of the functionality necessary to perform the most common data access tasks against a Microsoft SQL Server 2000 database.
Specifically, the Data Access Application Block helps you:
- Call stored procedures or SQL text commands.
- Specify parameter details.
- Return SqlDataReader, DataSet, XmlReader objects, or single values.
- Use strongly typed table and field names.
- Support parameter caching, where required.
- Allow additional tables to be added by passing in pre-existing datasets.
- Update a dataset with user-specified update commands.
- Create SqlCommand objects.
- Allow strongly typed data rows to be passed in place of parameters.
19 août 2006 à 12:56
:)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.