本文整理汇总了C#中Lfx.ExecuteSql方法的典型用法代码示例。如果您正苦于以下问题:C# Lfx.ExecuteSql方法的具体用法?C# Lfx.ExecuteSql怎么用?C# Lfx.ExecuteSql使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lfx
的用法示例。
在下文中一共展示了Lfx.ExecuteSql方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckAndUpdateDataBaseStructure
/// <summary>
/// Verifica la estructura de la base de datos actual y si es necesario modifica para que esté conforme
/// al diseño de referencia.
/// </summary>
/// <param name="dataBase">PrintDataBase mediante el cual se accede a la base de datos.</param>
/// <param name="omitPreAndPostSql">Omitir la ejecución de comandos Pre- y Post-actualización de estructura. Esto es útil cuando se actualiza una estructura vacía, por ejemplo al crear una base de datos nueva.</param>
/// /// <param name="progreso">El objeto sobre el cual reportar el progreso.</param>
public void CheckAndUpdateDataBaseStructure(Lfx.Data.Connection dataBase, bool omitPreAndPostSql, Lfx.Types.OperationProgress progreso)
{
progreso.ChangeStatus("Verificando estructuras de datos");
bool MustEnableConstraints = false;
if (dataBase.ConstraintsEnabled) {
dataBase.EnableConstraints(false);
MustEnableConstraints = true;
}
if (omitPreAndPostSql == false) {
progreso.ChangeStatus("Ejecutando guión previo...");
InyectarSqlDesdeRecurso(dataBase, @"Data.Struct.db_upd_pre.sql");
}
//Primero borro claves foráneas (deleteOnly = true)
progreso.ChangeStatus("Eliminando reglas obsoletas...");
dataBase.SetConstraints(Lfx.Workspace.Master.Structure.Constraints, true);
try {
dataBase.ExecuteSql("FLUSH TABLES");
} catch {
// No tengo permiso... no importa
}
progreso.Max = Lfx.Workspace.Master.Structure.Tables.Count;
foreach (Lfx.Data.TableStructure Tab in Lfx.Workspace.Master.Structure.Tables.Values) {
string TableLabel = Tab.Label;
if (Tab.Label == null)
TableLabel = Tab.Name.ToTitleCase();
progreso.ChangeStatus(progreso.Value + 1, "Verificando " + TableLabel);
dataBase.SetTableStructure(Tab);
}
//Ahora creo claves nuevas (deleteOnly = false)
progreso.ChangeStatus("Estableciendo reglas de integridad");
try {
dataBase.ExecuteSql("FLUSH TABLES");
} catch {
// No tengo permiso... no importa
}
dataBase.SetConstraints(Lfx.Workspace.Master.Structure.Constraints, false);
if (omitPreAndPostSql == false) {
progreso.ChangeStatus("Ejecutando guión posterior...");
InyectarSqlDesdeRecurso(dataBase, @"Data.Struct.db_upd_post.sql");
}
if (MustEnableConstraints)
dataBase.EnableConstraints(true);
}
示例2: InyectarSqlDesdeRecurso
private static void InyectarSqlDesdeRecurso(Lfx.Data.Connection dataBase, string archivo)
{
dataBase.RequiresTransaction = false;
System.IO.Stream RecursoActualizacion = Lfx.Workspace.ObtenerRecurso(archivo);
if (RecursoActualizacion != null) {
System.IO.StreamReader Lector = new System.IO.StreamReader(RecursoActualizacion);
string SqlActualizacion = dataBase.CustomizeSql(Lector.ReadToEnd());
RecursoActualizacion.Close();
try {
dataBase.ExecuteSql(SqlActualizacion);
} catch {
// Falló la ejecución... intento los comandos SQL de a uno, ignorando el que de un error
do {
string Comando = Data.Connection.GetNextCommand(ref SqlActualizacion);
try {
dataBase.ExecuteSql(Comando);
} catch {
if (Lfx.Environment.SystemInformation.DesignMode)
throw;
}
}
while (SqlActualizacion.Length > 0);
}
}
}