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); }
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()); }
public void RemoveItem(IContext context, string path, bool recurse) { var ddl = "DROP TABLE " + path; context.WriteVerbose(ddl); var cmd = _context.CreateCommand(ddl); cmd.ExecuteNonQuery(); }