Exferia/Exferia_EntityFramework/Exferia_EntityFramework/Conexion.cs

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();
}
}
}
}
}