CrearClaseSQLEl código de la librería para generar clases para acceder a una tabla |
Actualizado: 14/Jul/2004
Autor: Guillermo 'guille' Som
Volver al índice de Generar clases para acceder a una tabla o al de la librería
El código de la librería: CrearClase, CrearClaseOleDb, CrearClaseSQL, ConvLang
El código de Visual Basic .NET
'------------------------------------------------------------------------------ ' Clase para crear una clase a partir de una tabla de SQL Server (08/Jul/04) ' Basado en el código anteriormente incluido en crearClasesSQLVB (07/Jul/04) ' ' Todos los métodos son estáticos (compartidos) para usarlos sin crear una instancia ' ' ©Guillermo 'guille' Som, 2004 '------------------------------------------------------------------------------ Option Strict On Option Explicit On ' Imports System Imports Microsoft.VisualBasic ' Imports System.Data Imports System.Data.SqlClient Namespace elGuille.Data.CodeGenerator Public Class CrearClaseSQL Inherits CrearClase ' ' Public Shared Function Conectar(ByVal dataSource As String, _ ByVal initialCatalog As String, _ ByVal cadenaSelect As String) As String Return Conectar(dataSource, initialCatalog, cadenaSelect, "", "", False) End Function Public Shared Function Conectar(ByVal dataSource As String, _ ByVal initialCatalog As String, _ ByVal cadenaSelect As String, _ ByVal userId As String, _ ByVal password As String, _ ByVal seguridadSQL As Boolean) As String ' si se produce algún error, se devuelve una cadena empezando por ERROR Conectado = False ' cadenaConexion = "data source=" & dataSource & "; initial catalog=" & _ initialCatalog & ";" ' If seguridadSQL Then If userId <> "" Then cadenaConexion &= "user id=" & userId & ";" End If If password <> "" Then cadenaConexion &= "password=" & password & ";" End If Else cadenaConexion &= "Integrated Security=yes;" End If ' If cadenaSelect = "" Then ' si no se indica la cadena Select también se conecta ' esto es útil para averiguar las tablas de la base Conectado = True Return "" End If ' Dim dbDataAdapter As New SqlDataAdapter(cadenaSelect, cadenaConexion) ' dbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Try dbDataAdapter.Fill(mDataTable) System.Threading.Thread.Sleep(100) Conectado = True Catch ex As Exception Return "ERROR: en Fill: " & ex.Message '& " - " & ex.GetType().Name End Try ' Return "" End Function ' Public Shared Function NombresTablas() As String() Dim nomTablas() As String Dim dt As New DataTable Dim i As Integer Dim dbConnection As New SqlConnection(cadenaConexion) ' Try dbConnection.Open() Catch ex As Exception ReDim nomTablas(0) nomTablas(0) = "ERROR: " & ex.Message Conectado = False Return nomTablas End Try ' Dim schemaDA As New SqlDataAdapter( _ "SELECT * FROM INFORMATION_SCHEMA.TABLES " & _ "WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_TYPE", _ dbConnection) ' schemaDA.Fill(dt) i = dt.Rows.Count - 1 If i > -1 Then ReDim nomTablas(i) For i = 0 To dt.Rows.Count - 1 ' si el valor de TABLE_SCHEMA no es dbo, ' es que es una tabla de un usuario particular If dt.Rows(i).Item("TABLE_SCHEMA").ToString().ToLower() <> "dbo" Then nomTablas(i) = dt.Rows(i).Item("TABLE_SCHEMA").ToString() & _ "." & dt.Rows(i).Item("TABLE_NAME").ToString() Else nomTablas(i) = dt.Rows(i).Item("TABLE_NAME").ToString() End If Next End If ' Return nomTablas End Function ' Public Shared Function GenerarClase(ByVal lang As eLenguaje, _ ByVal usarCommandBuilder As Boolean, _ ByVal nombreClase As String, _ ByVal nomTabla As String, _ ByVal dataSource As String, _ ByVal initialCatalog As String, _ ByVal cadenaSelect As String, _ ByVal userId As String, _ ByVal password As String, _ ByVal usarSeguridadSQL As Boolean) As String Dim s As String ' nombreTabla = nomTabla If nombreTabla = "" OrElse nombreClase = "" Then Return "ERROR, no se ha indicado el nombre de la tabla o de la clase." End If s = Conectar(dataSource, initialCatalog, cadenaSelect, userId, password, usarSeguridadSQL) If Conectado = False OrElse s <> "" Then Return s End If ' Return CrearClase.GenerarClaseSQL(lang, usarCommandBuilder, nombreClase, dataSource, initialCatalog, cadenaSelect, userId, password, usarSeguridadSQL) End Function Public Shared Function GenerarClase(ByVal lang As eLenguaje, _ ByVal usarCommandBuilder As Boolean, _ ByVal nombreClase As String, _ ByVal nomTabla As String, _ ByVal dataSource As String, _ ByVal initialCatalog As String, _ ByVal cadenaSelect As String) As String ' Return GenerarClase(lang, usarCommandBuilder, nombreClase, nomTabla, dataSource, initialCatalog, cadenaSelect, "", "", False) End Function End Class End Namespace...
//------------------------------------------------------------------------------ // Clase para crear una clase a partir de una tabla de SQL Server (08/Jul/04) // Basado en el código anteriormente incluido en crearClasesSQLVB (07/Jul/04) // // Todos los métodos son estáticos (compartidos) para usarlos sin crear una instancia // // ©Guillermo 'guille' Som, 2004 //------------------------------------------------------------------------------ // using System; // using System.Data; using System.Data.SqlClient; namespace elGuille.Data.CodeGenerator { public class CrearClaseSQL:CrearClase { // // public static string Conectar(string dataSource, string initialCatalog, string cadenaSelect) { return Conectar(dataSource, initialCatalog, cadenaSelect, "", "", false); } public static string Conectar(string dataSource, string initialCatalog, string cadenaSelect, string userId, string password, bool seguridadSQL) { // si se produce algún error, se devuelve una cadena empezando por ERROR Conectado = false; // cadenaConexion = "data source=" + dataSource + "; initial catalog=" + initialCatalog + ";"; // if( seguridadSQL ) { if( userId != "" ) { cadenaConexion += "user id=" + userId + ";"; } if( password != "" ) { cadenaConexion += "password=" + password + ";"; } } else { cadenaConexion += "Integrated Security=yes;"; } // if( cadenaSelect == "" ) { // si no se indica la cadena Select también se conecta // esto es útil para averiguar las tablas de la base Conectado = true; return ""; } // SqlDataAdapter dbDataAdapter = new SqlDataAdapter(cadenaSelect, cadenaConexion); // dbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; try { dbDataAdapter.Fill(mDataTable); System.Threading.Thread.Sleep(100); Conectado = true; } catch(Exception ex) { return "ERROR: en Fill: " + ex.Message; //& [ª0001ª] & ex.GetType().Name } // return ""; } // public static String[] NombresTablas() { string[] nomTablas = null; DataTable dt = new DataTable(); int i; SqlConnection dbConnection = new SqlConnection(cadenaConexion); // try { dbConnection.Open(); } catch(Exception ex) { nomTablas = new string[1]; nomTablas[0] = "ERROR: " + ex.Message; Conectado = false; return nomTablas; } // SqlDataAdapter schemaDA = new SqlDataAdapter("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_TYPE", dbConnection); // schemaDA.Fill(dt); i = dt.Rows.Count - 1; if( i > -1 ) { nomTablas = new string[(i + 1)]; for(i = 0; i <= dt.Rows.Count - 1; i++) { // si el valor de TABLE_SCHEMA no es dbo, es que es una tabla de un usuario particular if( dt.Rows[i]["TABLE_SCHEMA"].ToString().ToLower() != "dbo" ) { nomTablas[i] = dt.Rows[i]["TABLE_SCHEMA"].ToString() + "." + dt.Rows[i]["TABLE_NAME"].ToString(); } else { nomTablas[i] = dt.Rows[i]["TABLE_NAME"].ToString(); } } } // return nomTablas; } // public static string GenerarClase(eLenguaje lang, bool usarCommandBuilder, string nombreClase, string nomTabla, string dataSource, string initialCatalog, string cadenaSelect, string userId, string password, bool usarSeguridadSQL) { string s; // nombreTabla = nomTabla; if( nombreTabla == "" || nombreClase == "" ) { return "ERROR, no se ha indicado el nombre de la tabla o de la clase."; } s = Conectar(dataSource, initialCatalog, cadenaSelect, userId, password, usarSeguridadSQL); if( Conectado == false || s != "" ) { return s; } // return CrearClase.GenerarClaseSQL(lang, usarCommandBuilder, nombreClase, dataSource, initialCatalog, cadenaSelect, userId, password, usarSeguridadSQL); } public static string GenerarClase(eLenguaje lang, bool usarCommandBuilder, string nombreClase, string nomTabla, string dataSource, string initialCatalog, string cadenaSelect) { // return GenerarClase(lang, usarCommandBuilder, nombreClase, nomTabla, dataSource, initialCatalog, cadenaSelect, "", "", false); } } }...