341 lines
13 KiB
C#
341 lines
13 KiB
C#
using Exferia_Aplicacion.General;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.EntityClient;
|
|
using System.Data.SqlClient;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Exferia_EntityFramework
|
|
{
|
|
public class Conexion
|
|
{
|
|
public static string ConnectionString
|
|
{
|
|
get
|
|
{
|
|
//Variable de Produccion: Variables.G_STR_CONEXION_USUARIO
|
|
//Variable de pruebas:
|
|
if (Variables.G_STR_CONEXION_USUARIO != "")//Con Usuario y Contraseña
|
|
{
|
|
var con = new EntityConnectionStringBuilder()
|
|
{
|
|
Metadata = @"res://*/EF_BaseDatos.csdl|res://*/EF_BaseDatos.ssdl|res://*/EF_BaseDatos.msl",
|
|
Provider = @"System.Data.SqlClient",
|
|
ProviderConnectionString = new SqlConnectionStringBuilder()
|
|
{
|
|
DataSource = Variables.G_STR_CONEXION_SERVIDOR,
|
|
InitialCatalog = Variables.G_STR_CONEXION_BASEDATOS,
|
|
UserID = Variables.G_STR_CONEXION_USUARIO,
|
|
Password = Variables.G_STR_CONEXION_CLAVE,
|
|
ConnectTimeout=5000,
|
|
|
|
}.ConnectionString,
|
|
};
|
|
|
|
return con.ConnectionString;
|
|
}
|
|
else//Sin usuario y Contraseña
|
|
{
|
|
var con = new EntityConnectionStringBuilder()
|
|
{
|
|
Metadata = @"res://*/EF_BaseDatos.csdl|res://*/EF_BaseDatos.ssdl|res://*/EF_BaseDatos.msl",
|
|
Provider = @"System.Data.SqlClient",
|
|
ProviderConnectionString = new SqlConnectionStringBuilder()
|
|
{
|
|
DataSource = Variables.G_STR_CONEXION_SERVIDOR,
|
|
InitialCatalog = Variables.G_STR_CONEXION_BASEDATOS,
|
|
IntegratedSecurity = true,
|
|
ConnectTimeout = 5000,
|
|
}.ConnectionString,
|
|
};
|
|
|
|
return con.ConnectionString;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool ComprobarConexion(string _str_Servidor, string _str_BaseDatos, string _str_Usuario, string _str_Clave)
|
|
{
|
|
SqlConnection obj_SqlConnection = null;
|
|
bool bol_ValorDevuelto = false;
|
|
try
|
|
{
|
|
if (_str_Servidor.Trim().Length > 0)
|
|
{
|
|
string UsuarioClave = "Integrated Security=SSPI;";
|
|
if (_str_Usuario != "")
|
|
{
|
|
UsuarioClave = "User Id=" + _str_Usuario + ";Password=" + _str_Clave + ";";
|
|
}
|
|
|
|
obj_SqlConnection = new SqlConnection();
|
|
obj_SqlConnection.ConnectionString = "Data Source=" + _str_Servidor + ";Initial Catalog=" + _str_BaseDatos + ";" + UsuarioClave + "Connect Timeout=10;";
|
|
obj_SqlConnection.Open();
|
|
|
|
if (obj_SqlConnection != null && obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
bol_ValorDevuelto = true;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
finally
|
|
{
|
|
//Si la Conexion no es nula y esta abierta se cierra
|
|
if (obj_SqlConnection != null)
|
|
{
|
|
if (obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
obj_SqlConnection.Close();
|
|
}
|
|
obj_SqlConnection.Dispose();
|
|
}
|
|
}
|
|
return bol_ValorDevuelto;
|
|
}
|
|
|
|
public static int Existe_BaseDatos(string _str_Servidor, string _str_BaseDatos, string _str_Usuario, string _str_Clave)
|
|
{
|
|
int int_ExisteBD = Variables.G_INT_CONEXIONBASEDATOS_VALIDACION_ERROR;//No se Conecto
|
|
|
|
SqlConnection obj_SqlConnection = null;
|
|
try
|
|
{
|
|
Stopwatch sw = new Stopwatch();
|
|
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
|
|
csb.DataSource = _str_Servidor;
|
|
csb.InitialCatalog = "master";
|
|
if (_str_Usuario.Trim().Equals("") || _str_Clave.Trim().Equals(""))
|
|
{
|
|
csb.IntegratedSecurity = true;
|
|
}
|
|
else
|
|
{
|
|
csb.Password = _str_Clave;
|
|
csb.UserID = _str_Usuario;
|
|
}
|
|
csb.ConnectTimeout = 100;
|
|
obj_SqlConnection = new SqlConnection(csb.ConnectionString);
|
|
|
|
//A los 10 Segundos sino se ha conectado que salga ################
|
|
Thread t = new Thread(delegate ()
|
|
{
|
|
try
|
|
{
|
|
sw.Start();
|
|
obj_SqlConnection.Open();
|
|
|
|
//Correcta
|
|
int_ExisteBD = Variables.G_INT_CONEXIONBASEDATOS_VALIDACION_CORRECTA_SINBASEDATOS;
|
|
}
|
|
catch { }
|
|
});
|
|
t.IsBackground = true;
|
|
t.Start();
|
|
//################################################################
|
|
|
|
while (10000 > sw.ElapsedMilliseconds)
|
|
if (t.Join(1))
|
|
break;
|
|
|
|
if (int_ExisteBD == Variables.G_INT_CONEXIONBASEDATOS_VALIDACION_CORRECTA_SINBASEDATOS)
|
|
{
|
|
//Buscar si Existe la Base De Datos
|
|
SqlCommand cmd_ExisteBD = new SqlCommand("SELECT count(name) as Total FROM sysdatabases where name='" + _str_BaseDatos + "'", obj_SqlConnection);
|
|
int int_ValorDevuelto = (int)cmd_ExisteBD.ExecuteScalar();
|
|
|
|
//Si no es 1 , es que la base de datos no existe
|
|
if (int_ValorDevuelto == 1)
|
|
{
|
|
//Existe
|
|
int_ExisteBD = Variables.G_INT_CONEXIONBASEDATOS_VALIDACION_CORRECTA_CONBASEDATOS;
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
int_ExisteBD = Variables.G_INT_CONEXIONBASEDATOS_VALIDACION_ERROR;
|
|
}
|
|
finally
|
|
{
|
|
//Si la Conexion no es nula y esta abierta se cierra
|
|
if (obj_SqlConnection != null)
|
|
{
|
|
if (obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
obj_SqlConnection.Close();
|
|
}
|
|
obj_SqlConnection.Dispose();
|
|
}
|
|
}
|
|
return int_ExisteBD;
|
|
}
|
|
|
|
public static bool BaseDatos_Crear()
|
|
{
|
|
bool bol_ValorDevuelto = true;
|
|
|
|
SqlConnection obj_SqlConnection = null;
|
|
|
|
try
|
|
{
|
|
SqlCommand obj_SqlCommand;
|
|
SqlConnectionStringBuilder obj_SqlConnectionStringBuilder = new SqlConnectionStringBuilder();
|
|
obj_SqlConnectionStringBuilder.DataSource = Variables.G_STR_CONEXION_SERVIDOR;
|
|
obj_SqlConnectionStringBuilder.InitialCatalog = "master";
|
|
|
|
if (Variables.G_STR_CONEXION_USUARIO.Trim().Equals("") || Variables.G_STR_CONEXION_CLAVE.Trim().Equals(""))
|
|
{ obj_SqlConnectionStringBuilder.IntegratedSecurity = true; }
|
|
else
|
|
{
|
|
obj_SqlConnectionStringBuilder.Password = Variables.G_STR_CONEXION_CLAVE;
|
|
obj_SqlConnectionStringBuilder.UserID = Variables.G_STR_CONEXION_USUARIO;
|
|
}
|
|
|
|
//Conexion
|
|
obj_SqlConnection = new SqlConnection(obj_SqlConnectionStringBuilder.ConnectionString);
|
|
obj_SqlConnection.Open();
|
|
|
|
string arr_Scripts = "CREATE DATABASE " + Variables.G_STR_CONEXION_BASEDATOS;
|
|
|
|
obj_SqlCommand = new SqlCommand(arr_Scripts, obj_SqlConnection);
|
|
obj_SqlCommand.ExecuteNonQuery();
|
|
|
|
obj_SqlConnection.Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Control_Errores("", ex, nameof(Conexion) + "/" + nameof(BaseDatos_Crear), true);
|
|
}
|
|
finally
|
|
{
|
|
if (obj_SqlConnection != null)
|
|
{
|
|
if (obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
obj_SqlConnection.Close();
|
|
}
|
|
obj_SqlConnection.Dispose();
|
|
}
|
|
}
|
|
|
|
return bol_ValorDevuelto;
|
|
}
|
|
|
|
public static bool EstructuraBaseDatos_Borrar()
|
|
{
|
|
bool bol_ValorDevuelto = true;
|
|
|
|
SqlConnection obj_SqlConnection = null;
|
|
|
|
try
|
|
{
|
|
SqlCommand obj_SqlCommand;
|
|
SqlConnectionStringBuilder obj_SqlConnectionStringBuilder = new SqlConnectionStringBuilder();
|
|
obj_SqlConnectionStringBuilder.DataSource = Variables.G_STR_CONEXION_SERVIDOR;
|
|
obj_SqlConnectionStringBuilder.InitialCatalog = "master";
|
|
|
|
if (Variables.G_STR_CONEXION_USUARIO.Trim().Equals("") || Variables.G_STR_CONEXION_CLAVE.Trim().Equals(""))
|
|
{ obj_SqlConnectionStringBuilder.IntegratedSecurity = true; }
|
|
else
|
|
{
|
|
obj_SqlConnectionStringBuilder.Password = Variables.G_STR_CONEXION_CLAVE;
|
|
obj_SqlConnectionStringBuilder.UserID = Variables.G_STR_CONEXION_USUARIO;
|
|
}
|
|
|
|
//Conexion
|
|
obj_SqlConnection = new SqlConnection(obj_SqlConnectionStringBuilder.ConnectionString);
|
|
obj_SqlConnection.Open();
|
|
|
|
string arr_Scripts = "DROP DATABASE " + Variables.G_STR_CONEXION_BASEDATOS;
|
|
|
|
obj_SqlCommand = new SqlCommand(arr_Scripts, obj_SqlConnection);
|
|
obj_SqlCommand.ExecuteNonQuery();
|
|
|
|
obj_SqlConnection.Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Control_Errores("", ex, nameof(Conexion) + "/" + nameof(EstructuraBaseDatos_Borrar), true);
|
|
}
|
|
finally
|
|
{
|
|
if (obj_SqlConnection != null)
|
|
{
|
|
if (obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
obj_SqlConnection.Close();
|
|
}
|
|
obj_SqlConnection.Dispose();
|
|
}
|
|
}
|
|
|
|
return bol_ValorDevuelto;
|
|
}
|
|
|
|
public static void Ejecutar_Script(string _str_Script)
|
|
{
|
|
SqlConnection obj_SqlConnection = null;
|
|
|
|
try
|
|
{
|
|
|
|
SqlCommand obj_SqlCommand;
|
|
SqlConnectionStringBuilder obj_SqlConnectionStringBuilder = new SqlConnectionStringBuilder();
|
|
obj_SqlConnectionStringBuilder.DataSource = Variables.G_STR_CONEXION_SERVIDOR;
|
|
obj_SqlConnectionStringBuilder.InitialCatalog = Variables.G_STR_CONEXION_BASEDATOS;
|
|
|
|
if (Variables.G_STR_CONEXION_USUARIO.Trim().Equals("") || Variables.G_STR_CONEXION_CLAVE.Trim().Equals(""))
|
|
{ obj_SqlConnectionStringBuilder.IntegratedSecurity = true; }
|
|
else
|
|
{
|
|
obj_SqlConnectionStringBuilder.Password = Variables.G_STR_CONEXION_CLAVE;
|
|
obj_SqlConnectionStringBuilder.UserID = Variables.G_STR_CONEXION_USUARIO;
|
|
}
|
|
|
|
//Conexion
|
|
obj_SqlConnection = new SqlConnection(obj_SqlConnectionStringBuilder.ConnectionString);
|
|
obj_SqlConnection.Open();
|
|
|
|
string[] arr_Scripts = _str_Script.Split(new string[] { "SIGUIENTELINEAPARAEJECUCION" }, StringSplitOptions.None);
|
|
foreach (string str_Script_Final in arr_Scripts)
|
|
{
|
|
if (str_Script_Final.Trim().Length > 0)
|
|
{
|
|
obj_SqlCommand = new SqlCommand(str_Script_Final, obj_SqlConnection);
|
|
obj_SqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
obj_SqlConnection.Close();
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Control_Errores("", ex, nameof(Conexion) + "/" + nameof(Ejecutar_Script), true);
|
|
}
|
|
finally
|
|
{
|
|
if (obj_SqlConnection != null)
|
|
{
|
|
if (obj_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
obj_SqlConnection.Close();
|
|
}
|
|
obj_SqlConnection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|