Beispiel #1
0
        void GenerarClases()
        {
            string errores = "";

            //	Verificar datos validos
            if (Datos.Count <= 0)
            {
                return;
            }

            //	Analizar cada tabla y generar el archivo correspondiente
            foreach (string nombreTabla in clbTablas.CheckedItems)
            {
                TablaDef tabla = Datos[nombreTabla];
                try {
                    //Crear archivo y verificar si existe
                    string     archivo = Opciones.CarpetaDeSalida + "\\" + nombreTabla + ".cs";
                    FileStream fs      = new FileStream(archivo, FileMode.Create);
                    //escribir using y encabezado de clase
                    string txt = "//	Creado por: OazMetal";
                    txt += "\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations.Schema;\nusing System.Data;\nusing System.Data.Linq.Mapping;\nusing System.Linq;\n\n";
                    txt += Opciones.NameSpace != ""
                                        ? "namespace " + Opciones.NameSpace + "\n{"
                                        : "namespace OazMetal\n{";
                    txt += "\n\n\t[Table]\n\tpublic class " + nombreTabla + "\n\t{";

                    fs.Write(txt.GetBytes(), 0, txt.Length);
                    //	escribir cada campo
                    foreach (KeyValuePair <string, Type> campo in tabla)
                    {
                        txt = "\n\t\t[Column]\n\t\tpublic " + campo.Value.FullName + " " + campo.Key + " {set;get;}";
                        fs.Write(txt.GetBytes(), 0, txt.Length);
                    }
                    //	Generar constructor basico
                    txt = "\n\n\t\tpublic " + nombreTabla + "()\n\t\t{\n\t\t}";
                    fs.Write(txt.GetBytes(), 0, txt.Length);

                    //	cerrar clase y archivo
                    txt = "\n\t}\n}";
                    fs.Write(txt.GetBytes(), 0, txt.Length);
                    fs.Close();
                } catch (Exception Ex) {
                    errores += nombreTabla + ":\t" + Ex.Message;
                }
            }
            if (Opciones.SalirAlGenerar)
            {
                Close();
            }
        }
Beispiel #2
0
        void PgOpcionesPropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            DataTable    tablaT      = null;
            string       nombreTabla = "";
            TablaDef     Campos      = new TablaDef();
            OleDbCommand cmdt;

            string cns = "";
            int    cnt = 0;

            clbTablas.Items.Clear();

            try {
                BaseDatos.Archivo = Opciones.ArchivoBD;
                //falta implementar usuario y clave

                //Abre base
                switch (Opciones.MotorBD)
                {
                case MotorBaseDatos.SQLite:
                {
                    cns = string.Format("DataSource={0};", Opciones.ArchivoBD);
                    if (Opciones.Usuario != "")
                    {
                        cns += string.Format("Usuario={0};", Opciones.Usuario);
                    }
                    if (Opciones.clave != "")
                    {
                        cns += string.Format("Password={0};", Opciones.clave);
                    }

                    SQLiteConnection SQCN = new SQLiteConnection(cns);
                    SQCN.Open();
                    tablaT = SQCN.GetSchema("Tables", new string[] { });

                    foreach (DataRow ren in tablaT.Rows)
                    {
                        try{
                            nombreTabla = (string)ren.ItemArray[2];
                            foreach (object c in ren.ItemArray)
                            {
                                nombreTabla = (string)ren.ItemArray[2];

                                if (!nombreTabla.StartsWith("sqlite_"))
                                {
                                    Campos = new TablaDef();
                                    clbTablas.Items.Add(nombreTabla);
                                    SQLiteCommand cmdtsq = SQCN.CreateCommand();
                                    cmdtsq.CommandText = string.Format("select * from {0}", nombreTabla);
                                    SQLiteDataReader sqDr = cmdtsq.ExecuteReader();
                                    for (int i = 0; i < sqDr.FieldCount; i++)
                                    {
                                        Campos.Add(sqDr.GetName(i), sqDr.GetFieldType(i));
                                    }
                                    Datos.Add(nombreTabla, Campos);
                                    sqDr.Close();
                                }
                            }
                        }
                        catch (Exception Ex) {
                            Console.WriteLine(Ex.Message);
                        }
                    }
                }
                break;

                case MotorBaseDatos.MsAccess:
                {
                    cns = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False;", Opciones.ArchivoBD);
                    if (Opciones.Usuario != "")
                    {
                        cns += string.Format("Usuario={0};", Opciones.Usuario);
                    }
                    if (Opciones.clave != "")
                    {
                        cns += string.Format("Password={0};", Opciones.clave);
                    }

                    OleDbConnection Cn = new OleDbConnection(cns);
                    Cn.Open();
                    DataTable aDT = Cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { });
                    Datos = new Dictionary <string, TablaDef>();
                    foreach (DataRow ren in aDT.Rows)
                    {
                        nombreTabla = (string)ren.ItemArray[2];

                        if (!nombreTabla.StartsWith("MSys"))
                        {
                            Campos = new TablaDef();
                            clbTablas.Items.Add(nombreTabla);
                            cmdt             = Cn.CreateCommand();
                            cmdt.CommandText = string.Format("select * from {0}", nombreTabla);
                            OleDbDataReader aDr = cmdt.ExecuteReader();
                            for (int i = 0; i < aDr.FieldCount; i++)
                            {
                                Campos.Add(aDr.GetName(i), aDr.GetFieldType(i));
                            }
                            Datos.Add(nombreTabla, Campos);
                            aDr.Close();
                        }
                    }
                }
                break;
                }
            } catch (Exception Ex) {
                Console.WriteLine(Ex.Message);
            }
        }