/** Fonde due hashtable aggiungendo alla prima
  *  le chiavi della seconda che non son già presenti */
 public void merge(ConvertibleHashtable h)
 {
     foreach (var k in h.Keys)
     {
         if (!this.ContainsKey(k))
         {
             this.Add(k, h[k]);
         }
     }
 }
 /** Aggiorna i dati contenuti nell'hashtable sostituendoli
  *  con i dati dell'hashtable passata per parametro */
 public void update(ConvertibleHashtable h)
 {
     foreach (var key in h.Keys)
     {
         if (this.ContainsKey(key))
         {
             this[key] = h[key];
         }
     }
 }
Exemple #3
0
        /// Inserisce un valore dentro una tabella (campi espliciti)
        public int insertData(String tableName, ConvertibleHashtable data)
        {
            // interrogo il db per ottenere informazioni sulla tabella
            ConvertibleHashtable[] h           = _executeQuery("pragma table_info(`" + tableName + "`);");
            List <String>          keys        = new List <String>();
            List <String>          invalidKeys = new List <String>();

            // aggiungo i nomi delle colonne alle chiavi
            foreach (ConvertibleHashtable x in h)
            {
                keys.Add(x["name"].ToString());
            }

            // aggiungo le chiavi invalide a una lista
            foreach (var k in data.Keys)
            {
                if (!(keys.Contains(k.ToString())))
                {
                    invalidKeys.Add(k.ToString());
                }
            }

            // rimuovo i campi invalidi e l'id che viene autogenerato
            foreach (String k in invalidKeys)
            {
                data.Remove(k);
            }
            data.Remove("id");

            String sql = "INSERT INTO `" + tableName + "` (";

            foreach (var d in data.Keys)
            {
                sql += "`" + d.ToString() + "`, ";
            }

            sql += "`id`) VALUES (";

            foreach (var d in data.Keys)
            {
                sql += "'" + data[d.ToString()] + "', ";
            }

            sql += "NULL);";

            lock (_lock) {
                _executeQuery(sql);
                return(int.Parse(_executeQuery("SELECT last_insert_rowid() FROM `" +
                                               tableName + "`;")[0]["last_insert_rowid()"].ToString()));
            }
        }
Exemple #4
0
        /// Converte i risultati di una query in un array di ConvertibleHashtable
        private ConvertibleHashtable[] _parseTable(DataTable table)
        {
            ConvertibleHashtable[] outputTable;

            if (table.Rows.Count > 0)
            {
                outputTable = new ConvertibleHashtable[table.Rows.Count];
                foreach (DataRow row in table.Rows)
                {
                    outputTable [table.Rows.IndexOf(row)] = new ConvertibleHashtable();
                    foreach (DataColumn column in table.Columns)
                    {
                        outputTable [table.Rows.IndexOf(row)].Add(column.ColumnName, row[column.ColumnName]);
                    }
                }
            }
            else
            {
                outputTable = new ConvertibleHashtable[] { new ConvertibleHashtable() }
            };

            return(outputTable);
        }