public SqliteCommand ToInsert()
        {
            var ddl    = "INSERT INTO {0} ( '{1}' ) VALUES( {2} ); SELECT MAX( {3} ) FROM {0};";
            var schema = GetSchema();

            var parameters = (from DataColumn field in schema.Columns
                              select new SqliteParameter(
                                  "@" + field.ColumnName
                                  ));
            var fields = (from DataColumn field in schema.Columns
                          select field.ColumnName);

            var parameterList = String.Join(", ", (from p in parameters select p.ParameterName).ToArray());
            var fieldList     = String.Join("', '", fields.ToArray());

            ddl = String.Format(
                ddl,
                _tableName,
                fieldList,
                parameterList,
                PrimaryKeyField
                );

            var cmd = _context.CreateCommand(ddl);

            cmd.Parameters.AddRange(parameters.ToArray());

            return(cmd);
        }
Example #2
0
        public IPathNode NewItem(IContext context, string path, string itemTypeName, object newItemValue)
        {
            string ddl        = newItemValue as string;
            var    schema     = newItemValue as Hashtable;
            var    parameters = context.DynamicParameters as NewTableParameters;

            path = RemoveInvalidChars(path);
            if (null != ddl)
            {
                ddl = String.Format(@"CREATE TABLE {0} ( {1} )", path, ddl);
            }
            else if (null != schema)
            {
                var coldefs = ConvertToColumnDefinitionDDL(schema);
                ddl = String.Format(@"CREATE TABLE {0} ( {1} )", path, coldefs);
            }
            else if (null != parameters)
            {
                var coldefs = ConvertToColumnDefinitionDDL(parameters);
                ddl = String.Format(@"CREATE TABLE {0} ( {1} )", path, coldefs);
            }

            if (null == ddl)
            {
                throw new ArgumentException(
                          @"The new table schema must be specified as a DDL string, a hashtable of column names associated with SQLite DDL strings, or as individual parameters.  For instance:
new-item mydb:/tableOfNames -value @{ 
    id = 'INTEGER PRIMARY KEY';
    name = 'TEXT NOT NULL';
    ...
}

or

new-item mydb:/tableOfNames -value 'id INTEGER PRIMARY KEY, name TEXT NOT NULL'

or

new-item mydb:/tableOfNames -id INTEGER PRIMARY KEY -name TEXT NOT NULL
",
                          "newItemValue"
                          );
            }

            context.WriteVerbose(ddl);

            var cmd = _sqliteContext.CreateCommand(ddl);

            cmd.ExecuteNonQuery();

            var node = Resolve(context, path);

            if (null == node || !node.Any())
            {
                throw new InvalidOperationException("Failed to create new table " + path);
            }
            return(node.First().GetNodeValue());
        }
Example #3
0
        public void RemoveItem(IContext context, string path, bool recurse)
        {
            var ddl = "DROP TABLE " + path;

            context.WriteVerbose(ddl);

            var cmd = _context.CreateCommand(ddl);

            cmd.ExecuteNonQuery();
        }