Seguint amb la sèrie de la clsDades aquesta és la funció que s'encarrega d'actualitzar un registre a la BBDD. Fa servir la SP UPD per fer-ho. Així que ha de fer servir la variable ParamsUPD per informar-ne els paràmetres. Existeix en 2 sabors diferents, un que rep un DataRow i un altra que rep un objecte Dictionary (on les Keys són els noms dels camps i els Values el valor). Igual que la funció INS, aquesta també invalida la cache. Com sempre el codi, primer el que rep el Dictionary:
public void UPD(Dictionary<string, string> Params)
{
SqlCommand SqlComm = new SqlCommand();
SqlParameter SqlParam;
bool LocalConn;
SqlConnection Conn = null;
if (SQLConn == null)
{
LocalConn = true;
Conn = new SqlConnection(CadConnBBDD);
Conn.Open();
}
else
{
LocalConn = false;
Conn = SQLConn;
}
SqlComm.Connection = Conn;
if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
SqlComm.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spUPD;
foreach (clsCamp Camp in ParamsUPD)
{
SqlParam = CreaParametre(Camp, false);
if (Params.Keys.Contains<string>(Camp.NomCamp))
{
if (string.IsNullOrEmpty(Params[Camp.NomCamp]))
{
if (Camp.Nulable) SqlParam.Value = DBNull.Value;
else
{
Exception Ex = new Exception("El camp " + Camp.NomCamp + " no admet valors nulls");
throw Ex;
}
}
else SqlParam.Value = Params[Camp.NomCamp];
}
else
{
if (Camp.Nulable) SqlParam.Value = DBNull.Value;
else
{
if (!Camp.Identitat)
{
Exception Ex = new Exception("El camp " + Camp.NomCamp + " no admet valors nulls");
throw Ex;
}
}
}
SqlParam.ParameterName = Prefix + Camp.NomCamp;
SqlParam.Value = Params[Camp.NomCamp];
SqlComm.Parameters.Add(SqlParam);
}
SqlComm.ExecuteNonQuery();
if (TeCache && AutoNetejaCache)
{
ClearCache();
}
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
}
I després la versió que rep un DataRow:
public void UPD(DataRow DR)
{
SqlCommand SqlComm = new SqlCommand();
SqlParameter SqlParam;
bool LocalConn;
SqlConnection Conn = null;
if (SQLConn == null)
{
LocalConn = true;
Conn = new SqlConnection(CadConnBBDD);
Conn.Open();
}
else
{
LocalConn = false;
Conn = SQLConn;
}
SqlComm.Connection = Conn;
if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
SqlComm.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spUPD;
foreach (clsCamp Camp in ParamsUPD)
{
SqlParam = CreaParametre(Camp, false);
SqlParam.Value = DR[Camp.NomCamp];
SqlComm.Parameters.Add(SqlParam);
}
SqlComm.ExecuteNonQuery();
if (TeCache && AutoNetejaCache)
{
ClearCache();
}
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
}
|