Beispiel #1
0
        public static Tabella ToTabella(DataTable tab)
        {
            Tabella Ris = new Tabella();

            foreach (DataColumn dc in tab.Columns)
            {
                Ris.Struct += dc.ColumnName + " ";
                switch (dc.DataType.ToString())
                {
                case "System.Int32":
                    Ris.Struct += "INT ";
                    break;

                case "System.String":
                    Ris.Struct += "NVARCHAR ";
                    if (dc.MaxLength > -1)
                    {
                        Ris.Struct += "(" + dc.MaxLength.ToString() + ") ";
                    }
                    else
                    {
                        Ris.Struct += "(MAX) ";
                    }
                    break;

                case "System.Boolean":
                    Ris.Struct += "BIT ";
                    break;

                case "System.DateTime":
                    Ris.Struct += "DATETIME ";
                    break;

                case "System.Decimal":
                    Ris.Struct += "DECIMAL ";
                    break;
                }
                if (dc.AutoIncrement)
                {
                    Ris.Struct += "IDENTITY ";
                }
                if (dc.Unique)
                {
                    Ris.Struct += "PRIMARY KEY ";
                }

                if (dc.AllowDBNull)
                {
                    Ris.Struct += "NULL ";
                }
                else
                {
                    Ris.Struct += "NOT NULL ";
                }

                if (dc.DefaultValue.ToString().Length > 0)
                {
                    Ris.Struct += "DEFAULT ";
                    if (dc.DataType.ToString() == "System.String")
                    {
                        Ris.Struct += "'" + dc.DefaultValue.ToString() + "' ";
                    }
                    else
                    {
                        Ris.Struct += dc.DefaultValue.ToString();
                    }
                }
                Ris.Struct += '\t';
            }
            Ris.Struct = Ris.Struct.Substring(0, Ris.Struct.Length - 1);
            foreach (DataRow dr in tab.Rows)
            {
                for (int i = 0; i < tab.Columns.Count; i++)
                {
                    if ((tab.Columns[i].DataType.ToString() == "System.String") || (tab.Columns[i].DataType.ToString() == "System.Int32"))
                    {
                        Ris.Data += dr[i].ToString() + '\t';
                    }
                    if (tab.Columns[i].DataType.ToString() == "System.Decimal")
                    {
                        Ris.Data += dr[i].ToString().Replace(',', '.') + '\t';
                    }
                    if (tab.Columns[i].DataType.ToString() == "System.DateTime")

                    {
                        Ris.Data += Convert.ToDateTime(dr[i]).ToString("yyyyMMdd") + '\t';
                    }
                    if (tab.Columns[i].DataType.ToString() == "System.Boolean")
                    {
                        if (Convert.ToBoolean(dr[i]))
                        {
                            Ris.Data += "1";
                        }
                        else
                        {
                            Ris.Data += "0";
                        }
                        Ris.Data += '\t';
                    }
                }
                Ris.Data  = Ris.Data.Substring(0, Ris.Data.Length - 1);
                Ris.Data += '\n';
            }
            if (Ris.Data.EndsWith("\n"))
            {
                Ris.Data = Ris.Data.Substring(0, Ris.Data.Length - 1);
            }
            Ris.Name = tab.TableName;
            return(Ris);
        }
Beispiel #2
0
        public Ritorno RunProcedure(List <Tabella> Par)
        {
            Ritorno rit = new Ritorno();

            BeginTransaction();
            try
            {
                SqlCommand creaTabMex  = new SqlCommand(_FunzioniBase.Properties.Resources.SqlCreaTabMex, cnn, Tran);
                SqlCommand creaTabTemp = new SqlCommand(_FunzioniBase.Properties.Resources.SqlCreaTabTemp, cnn, Tran);
                creaTabMex.ExecuteNonQuery();
                creaTabTemp.ExecuteNonQuery();
                SqlCommand insertInput = new SqlCommand("INSERT INTO #brn_input (Name,Data) Values (@Name,@Data)", cnn, Tran);
                foreach (Tabella t in Par)
                {
                    insertInput.Parameters.Clear();
                    insertInput.Parameters.AddWithValue("@Name", t.Name);
                    insertInput.Parameters.AddWithValue("@Data", t.Struct);
                    insertInput.ExecuteNonQuery();
                    foreach (String s in t.Data.Split(new char[] { '\n' }))
                    {
                        insertInput.Parameters["@Data"].Value = s;
                        insertInput.ExecuteNonQuery();
                    }
                }
                SqlCommand EseguiAzione = new SqlCommand("EXEC brn_sp_Azione", cnn, Tran);
                EseguiAzione.ExecuteNonQuery();

                SqlCommand    LeggiTabTemp = new SqlCommand(_FunzioniBase.Properties.Resources.SqlLeggiTabTemp, cnn, Tran);
                SqlDataReader reader       = LeggiTabTemp.ExecuteReader();
                DataTable     ris          = new DataTable();
                ris.Load(reader);
                String NomeTabella        = "";
                _FunzioniBase.Tabella Tab = new Tabella();
                foreach (DataRow dr in ris.Rows)
                {
                    if (!(dr["Name"].ToString() == NomeTabella)) //se è una nuova tabella
                    {
                        if (Tab.Data.Length > 0)
                        {
                            Tab.Data.Substring(0, Tab.Data.Length - 1);
                        }
                        if (!(NomeTabella == ""))
                        {
                            AggiungiTabella(rit, Tab);
                        }

                        Tab         = new Tabella();
                        Tab.Name    = dr["Name"].ToString();
                        Tab.Struct  = dr["Data"].ToString();
                        NomeTabella = dr["Name"].ToString();
                    }
                    else
                    {
                        Tab.Data += dr["Data"].ToString() + '\n';
                    }
                }
                if (Tab.Data.Length > 0)
                {
                    Tab.Data.Substring(0, Tab.Data.Length - 1);
                }

                AggiungiTabella(rit, Tab);

                SqlCommand DropTabTemp = new SqlCommand(_FunzioniBase.Properties.Resources.SqlDropTabTemp, cnn, Tran);
            }
            catch (Exception ex)
            {
                rit = new Ritorno();

                rit.Errori.Add(ex.Message);
            }
            finally
            {
                if ((rit.Errori.Count == 0))
                {
                    if ((GetArg(Par, "IgnoraAvvisi") == "1"))
                    {
                        rit.Avvisi.Clear();
                    }

                    if ((rit.Avvisi.Count == 0))
                    {
                        CommitTransaction();
                    }
                    else
                    {
                        RollbackTransaction();
                    }
                }
                else
                {
                    RollbackTransaction();
                }
            }
            return(rit);
        }