La clsDades és el punt de l'aplicació web que per una banda dóna servei als ASHX mitjançant les classes derivades i per l'altra interactua amb les Stored Procedures (SP) de la BBDD. Però a vegades una consulta, o una operació no s'ajusta a la forma d'operar de les SP i per això es fa una consulta adhoc directament al codi. Però per evitar muntar tota la infraestructura necessària per accedir i executar la consulta he ampliat la clsDades. També hi ha tasques i problemes que es van donant en la interacció amb la BBDD de forma habitual, també he posat els mètodes corresponents a la clsDades. Diguem que ara té una part "oficial" amb el GET, GETTOP, INS, UPD, DEL, QUERY i una d'utilitats que aniré posant.
Un del punts problemàtics alhora de interactuar amb la BBDD és l'idioma, que si l'idioma del webserver, que l'idioma de la BBDD, etc... La solució és fer servir un format de data que sigui independent de l'idioma, per exemple el ISO 8601. Per això he fet una mini funció que genera una data en aquesta format.
public string FDateSQL(DateTime D)
{
return D.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
}
Altres funcions són un xic més complicades, per exemple, executar una SQL i retornar una DataTable. Aquesta està disponible en tres sabors: un que només rep la sentència SQL que s'ha d'executar, una altra SQL i connexió i la tercera SQL, connexió i transacció. Com sempre el codi:
public DataTable Exec(string SQL, SqlConnection pSqlConn, SqlTransaction pSqlTrann)
{
DataTable TBL = new DataTable();
SqlCommand SqlComm = new SqlCommand();
SqlDataReader SqlReader;
SqlComm.Connection = pSqlConn;
if (pSqlTrann != null) SqlComm.Transaction = pSqlTrann;
SqlComm.CommandText = SQL;
SqlComm.CommandType = CommandType.Text;
SqlReader = SqlComm.ExecuteReader();
TBL.Load(SqlReader);
return TBL;
}
public DataTable Exec(string SQL, SqlConnection pSqlConn)
{
return Exec(SQL, pSqlConn, SQLTrans);
}
public DataTable Exec(string SQL)
{
DataTable TBL;
SqlConnection localSqlConn;
bool Local = false;
if (SQLConn != null)
{
localSqlConn = SQLConn;
}
else
{
Local = true;
localSqlConn = new SqlConnection();
localSqlConn.ConnectionString = CadConnBBDD;
localSqlConn.Open();
}
TBL = Exec(SQL, localSqlConn);
if (Local) localSqlConn.Close();
return TBL;
}
Altres métodes que segueixen ampliant la clsDades les tractare en futurs posts. |