• Domingo 22 de Diciembre de 2024, 13:25

Autor Tema:  Crear una base de datos en C# según tutorial adjunto.  (Leído 1746 veces)

ipadilla

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Crear una base de datos en C# según tutorial adjunto.
« en: Jueves 4 de Agosto de 2011, 12:19 »
0
Hola a todos:

Parece ser que no hay nadie que me pueda resolver este problema que tengo con este tutorial
en los foros de C# o VB. Por fabor véase el tutorial siguiente:

http://msdn.microsoft.com/es-es/library/49b92ztk.aspx

Mi problema es el siguiente: si creo el Instalador de la base de datos tal como explica
el manual en lenguaje VB.Net no tengo ningún problema, pero su lo creo en C# no funciona.
Lo he probado 100 veces y repasado la instalación del instalador otras tantas veces, pero
no logro que funcione.

Adjunto los 2 proyectos en VB y C# disponibles para que algún experto los vea y  descubra
lo que ocurre pues a mi me falta experiencia por lo visto. No logro entender lo que ocurre.
Ambos proyectos se compilan y ejecutan perfectamente sin ningún error, pero el proyecto en VB
crea la base de datos "TRIPOLIS" y el proyecto en C# no la crea.

Espero que haya alguien que me eche una manos.

Gracias

-----------------------------clase en VB.Net que funciona

Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.IO
Imports System.Reflection
Imports System.Data.SqlClient


Public Class VbDeployInstaller

    Dim masterConnection As New System.Data.SqlClient.SqlConnection

    Public Sub New()
        MyBase.New()

        'El Diseñador de componentes requiere esta llamada.
        InitializeComponent()

        'Agregue el código de inicialización después de llamar a InitializeComponent

    End Sub

    Private Function GetSql(ByVal Name As String) As String
        Try

            ' Gets the current assembly.
            Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()

            ' Resources are named using a fully qualified name.
            Dim strm As Stream = Asm.GetManifestResourceStream(
              Asm.GetName().Name + "." + Name)

            ' Reads the contents of the embedded file.
            Dim reader As StreamReader = New StreamReader(strm)
            Return reader.ReadToEnd()

        Catch ex As Exception
            MsgBox("In GetSQL: " & ex.Message)
            Throw ex
        End Try
    End Function

    Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
        Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)

        ' Initialize the connection, open it, and set it to the "master" database
        masterConnection.ConnectionString = My.Settings.masterConnectionString
        Command.Connection.Open()
        Command.Connection.ChangeDatabase(DatabaseName)
        Try
            Command.ExecuteNonQuery()
        Finally
            ' Closing the connection should be done in a Finally block
            Command.Connection.Close()
        End Try
    End Sub

    Protected Sub AddDBTable(ByVal strDBName As String)
        Try
            ' Creates the database.
            ExecuteSql("master", "CREATE DATABASE TRIPOLIS") ' + strDBName)

            ' Creates the tables.
            ExecuteSql("TRIPOLIS", GetSql("sql.txt"))
            ExecuteSql("TRIPOLIS", GetSql("NuevoUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("UsuarioAdmin.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActivarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStock.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStockDetalleAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStockPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ConsultarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromAlmacenByCodigo.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacenByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacenStockMalo.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleVentaByCodVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoAB.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoABByCodProd.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoABByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoByCodProd.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoDetallePedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoIngresoPedidoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoIngresoPedidoByRaz_Soc.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoTransferencia.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedidoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedidoByNombPers.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromUsuarios.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromUsuariosByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVentaByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVentasByNombPers.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromCategoriaByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromCategoriaByUbic.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromClienteByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPedidoByFechasNoIngresado.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPedidosByNombPersNoActivados.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPersonalByDescNoActivados.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPersonalByDni.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProductoByAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProductoByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProveedorByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetProductosFromAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("IngresarPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_buscarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_buscarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_modificarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ReducirStockOrigen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistarProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetallePedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarEditarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistorico.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistorico_AB.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistoricoIngPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarNuevoProductoEnAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarStockIngreso.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarAlmacenesOrigen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarPedidoNoIngresado.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarPersonalSinUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarProductoPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarUltimoProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ValidarUsuario.txt"))

        Catch ex As Exception
            ' Reports any errors and abort.
            MsgBox("In exception handler: " & ex.Message)
            Throw ex
        End Try
    End Sub

    Public Overrides Sub Install(
        ByVal stateSaver As System.Collections.IDictionary)

        MyBase.Install(stateSaver)
        AddDBTable(Me.Context.Parameters.Item("dbname"))
    End Sub

End Class

-----------------------Clase en C# que no funciona


using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Microsoft.VisualBasic;
using System.Xml.Linq;
using System;
using System.Collections;
using System.Linq;
using System.ComponentModel;
using System.Configuration.Install;
using System.IO;
using System.Reflection;
using System.Data.SqlClient;
using System.Windows.Forms;



namespace DBCustomAction
{
   public partial class CSDeployInstaller
   {
      
        System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();

      public CSDeployInstaller()
      {
         
         //El Diseñador de componentes requiere esta llamada.
         InitializeComponent();
         
         //Agregue el código de inicialización después de llamar a InitializeComponent
         
      }
      
      private string GetSql(string Name)
      {
         try
         {

                // Gets the current assembly.
            Assembly Asm = Assembly.GetExecutingAssembly();
            
            // Resources are named using a fully qualified name.
            Stream strm = Asm.GetManifestResourceStream((string) (Asm.GetName().Name + "." + Name));
            
            // Reads the contents of the embedded file.
            StreamReader reader = new StreamReader(strm);
            return reader.ReadToEnd();
            
         }
         catch (Exception ex)
         {
            MessageBox.Show("In GetSQL: " + ex.Message);
            throw (ex);
         }
      }
      
      private void ExecuteSql(string DatabaseName, string Sql)
      {
         System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, masterConnection);
         
         // Initialize the connection, open it, and set it to the "master" database
         masterConnection.ConnectionString = (string) My.Settings.Default.masterConnectionString;
         Command.Connection.Open();
         Command.Connection.ChangeDatabase(DatabaseName);
         try
         {
            Command.ExecuteNonQuery();
         }
         finally
         {
            // Closing the connection should be done in a Finally block
            Command.Connection.Close();
         }
      }
      
      protected void AddDBTable(string strDBName)
      {
         try
         {
            // Creates the database.
            ExecuteSql("master", "CREATE DATABASE Tripolis"); // + strDBName)
            
            // Creates the tables.
            ExecuteSql("Tripolis", GetSql("sql.txt"));
            ExecuteSql("Tripolis", GetSql("NuevoUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("UsuarioAdmin.txt"));
            ExecuteSql("Tripolis", GetSql("ActivarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStock.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStockDetalleAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStockPedido.txt"));
            ExecuteSql("Tripolis", GetSql("ConsultarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarProducto.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromAlmacenByCodigo.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromCliente.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacenByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacenStockMalo.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleVentaByCodVenta.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoAB.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoABByCodProd.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoABByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoByCodProd.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoDetallePedido.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoIngresoPedidoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoIngresoPedidoByRaz_Soc.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoTransferencia.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedido.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedidoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedidoByNombPers.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromProducto.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromUsuarios.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromUsuariosByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVenta.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVentaByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVentasByNombPers.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromCategoriaByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromCategoriaByUbic.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromClienteByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPedidoByFechasNoIngresado.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPedidosByNombPersNoActivados.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPersonalByDescNoActivados.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPersonalByDni.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProductoByAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProductoByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProveedorByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetProductosFromAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("IngresarPedido.txt"));
            ExecuteSql("Tripolis", GetSql("pa_buscarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("pa_buscarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("pa_modificarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("ReducirStockOrigen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistarProducto.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetallePedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetVenta.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarEditarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistorico.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistorico_AB.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistoricoIngPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarNuevoProductoEnAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarStockIngreso.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarVenta.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarAlmacenesOrigen.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarPedidoNoIngresado.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarPersonalSinUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarProductoPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarUltimoProducto.txt"));
            ExecuteSql("Tripolis", GetSql("UsuarioAdmin.txt"));
            ExecuteSql("Tripolis", GetSql("ValidarUsuario.txt"));
            
         }
         catch (Exception ex)
         {
            // Reports any errors and abort.
            MessageBox.Show("In exception handler: " + ex.Message);
            throw (ex);
         }
      }
      
      public override void Install(System.Collections.IDictionary stateSaver)
      {
         
         base.Install(stateSaver);
         AddDBTable(this.Context.Parameters["dbname"]);
      }
      
   }
   
}

ipadilla

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re:Crear una base de datos en C# según tutorial adjunto.
« Respuesta #1 en: Viernes 5 de Agosto de 2011, 10:07 »
0
Problema resuelto.

Tenía mal instaladas las propiedades del Setup del Instalador. Ahora funciona bien.
ipadilla
El mensaje contiene 2 archivos adjuntos. Debes ingresar o registrarte para poder verlos y descargarlos.