none
Crear base de datos oracle desde programa c# RRS feed

  • Pregunta

  • Saludos a todos.

    Estoy creando un programa en c# que funcionará con distintos orígenes de datos.

    Un primer programa será el que configure los datos de conexión a la base de datos, este programa utiliza System.Data.Common, se selecciona el tipo de base de datos (SQL Server, Oracle, MySQL, etc) para generar el DbProviderFactory y crear la base de datos con sus tablas, procedimientos almacenados y funciones. Ya está conseguido para servidor remoto SQL Server, comparto el código:

    dpf = DbProviderFactories.GetFactory(dp); //dp = "System.Data.SqlClient"
    
    conexion = dpf.CreateConnection();
    using (conexion)
    {
         //Cadena de conexión a la master para crear la base de datos
         this.conexion.ConnectionString =
              "server=" + this.txt_SD_Servidor.Text +
              ";database=master" +
              ";user id=" + this.txt_SD_UserId.Text +
              ";password=" + this.txt_SD_Pwd.Text;
         this.conexion.Open();
    
         dbcmd = conexion.CreateCommand();
         dbcmd.CommandText = "CREATE DATABASE " + this.txt_SD_BD.Text;
         dbcmd.ExecuteNonQuery();
    
         conexion.Close();
    
         //Cadena de conexión a la nueva base de datos para crear las tablas, procedimientos y funciones.
         this.conexion.ConnectionString = this.txt_CnStr.Text;
         this.conexion.Open();
    
         dbcmd = conexion.CreateCommand();
    
         dbcmd.CommandText = "CREATE TABLE ..."
         dbcmd.ExecuteNonQuery();
    
         dbcmd.CommandText = "CREATE TABLE ..."
         dbcmd.ExecuteNonQuery();
    
         dbcmd.CommandText = "CREATE TABLE ..."
         dbcmd.ExecuteNonQuery();
    }
    

    Quiero hacer lo mismo para un servidor remoto oracle. La conexión ya cuando la base de datos ya existe funciona correctamente; conseguí un ejemplo de cómo hacerlo pero en un servidor local donde están juntos el programa y la base de datos, algo como esto, pero no lo he probado.

    using (conexion)
    {
         conexion.Open();
    
         dbcmd = conexion.CreateCommand();
         dbcmd.CommandText = "CREATE TABLESPACE \"" + this.txtDatabase.Text + "\" DATAFILE '" + this.txt_oradata.Text + this.txtDatabase.Text + ".DBF' SIZE 10M AUTOEXTEND ON NEXT 1M";
         dbcmd.ExecuteNonQuery();
    
         dbcmd.CommandText = "CREATE USER \"" + this.txtUserId.Text + "\" IDENTIFIED BY \"" + this.txtPwd.Text + "\" DEFAULT TABLESPACE \"" + this.txtDatabase.Text + "\" TEMPORARY TABLESPACE TEMP";
    
         dbcmd.ExecuteNonQuery();
    
         dbcmd.CommandText = "GRANT CONNECT TO \"" + this.txtUserId.Text + "\"";dbcmd.ExecuteNonQuery();dbcmd.CommandText = "ALTER USER \"" + this.txtUserId.Text + "\" QUOTA UNLIMITED ON \"" + this.txtDatabase.Text + "\"";
    
         dbcmd.ExecuteNonQuery();
    }
    
    

    Muchas gracias de antemano por la ayuda que me puedan brindar.



    miércoles, 14 de agosto de 2019 12:03