コード例 #1
0
ファイル: replaceIndex.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {
                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {
                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {
                        // Replace the index on the "product" node.
                        replaceIndex(mgr, container, "", "product",
                            "node-attribute-substring-string node-element-equality-string",
                            txn);
                        // Commit the index replacement
                        txn.Commit();
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error replacing index for container " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #2
0
ファイル: modifyDocument.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {

                        // Create a context and declare the namespaces
                        using(QueryContext context = mgr.CreateQueryContext())
                        {
                            context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                            context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                            context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                            // Modify the document that describes "Zapote Blanco" (a fruit)
                            string query = "collection(\"" + theContainer + "\")/fruits:item/product[. = 'Zapote Blanco']";

                            doModify(mgr, container, context, query, txn);

                            System.Console.WriteLine("If committed, this program will add a new element each time it is run.");
                            System.Console.WriteLine("Press 'c' to commit this change:");
                            int c = System.Console.Read();
                            if (c == (int)'c' || c == (int)'C')
                                txn.Commit();
                            else
                                txn.Abort();
                        }

                    }

                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing document modification against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #3
0
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {
                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {
                    // Create a context and declare the namespaces
                    using(QueryContext context = mgr.CreateQueryContext())
                    {
                        context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                        context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                        context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                        // Query for documents using their document names.
                        // The name is stored as meta data on the document, using the
                        // namespace "http://www.sleepycat.com/2002/dbxml" and the name
                        // "name".

                        // Notice that you do NOT have to declare the dbxml namespace in
                        // the QueryContext used for this query. Also, each document name
                        // was set by exampleLoadContainer when the document was loaded into
                        // the Container.
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")[dbxml:metadata('dbxml:name')='ZuluNut.xml']",
                            context);
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")[dbxml:metadata('dbxml:name')='TrifleOrange.xml']",
                            context);
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")[dbxml:metadata('dbxml:name')='TriCountyProduce.xml']",
                            context);
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")[/fruits:item/product=\"Zulu Nut\"]",
                            context);
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing query against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #4
0
ファイル: simpleAdd.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {

                        // Create an update context
                        using(UpdateContext uc = mgr.CreateUpdateContext())
                        {
                            // Create string contents for documents.
                            string document1 = "<aDoc><title>doc1</title><color>green</color></aDoc>";
                            string document2 = "<aDoc><title>doc2</title><color>yellow</color></aDoc>";

                            // Put the document, asking DB XML to generate a name
                            DocumentConfig docconfig = new DocumentConfig();
                            docconfig.GenerateName = true;
                            container.PutDocument(txn, "", document1, uc, docconfig);

                            // Do it again for the second document
                            container.PutDocument(txn, "", document2, uc, docconfig);

                            // Commit the writes. This causes the container write operations
                            // to be saved to the container.
                            txn.Commit();
                        }
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing document add against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #5
0
ファイル: deleteDocument.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {

                        // Create a context and declare the namespaces
                        using(QueryContext context = mgr.CreateQueryContext())
                        {
                            context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                            context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                            context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                            // Delete the document that describes Mabolo (a fruit)
                            string query = "collection(\"" + theContainer + "\")/fruits:item[product = 'Mabolo']";

                            // If doDeleteDocument throws an exception then the using block
                            // will call Dispose() on the Transaction, which will cause it
                            // to abort itself.
                            doDeleteDocument(mgr, container, query, context, txn);
                            txn.Commit();

                            confirmDelete(mgr, query, context);
                        }
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing document delete against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #6
0
ファイル: deleteIndex.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {
                        // Delete an string equality index for the "product" element node.
                        deleteIndex(mgr, container, "", "product",
                            "node-element-equality-string", txn);

                        // Commit the index delete
                        txn.Commit();
                    }

                    // Perform the deletes in two different transactions for
                    // no particular reason
                    using(Transaction txn = mgr.CreateTransaction())
                    {
                        // Delete an edge presence index for the product node
                        deleteIndex(mgr, container, "", "product",
                            "edge-element-presence-none", txn);

                        // Commit the index delete
                        txn.Commit();
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error deleting indexes from container " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #7
0
ファイル: updateDocument.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {

                        // Create a context and declare the namespaces
                        using(QueryContext context = mgr.CreateQueryContext())
                        {
                            context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                            context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                            context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                            // update the document that describes Zapote Blanco (a fruit)
                            string query = "collection(\"" + theContainer +
                                "\")/fruits:item/product[text() = 'Zapote Blanco']";
                            doUpdateDocument(mgr, container, query, context, txn);

                            // Commit the writes. This causes the container write operations
                            // to be saved to the container.
                            txn.Commit();
                        }
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing document update against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #8
0
    public static void LoadFiles(Manager mgr, string containerName, FileInfo[] files)
    {
        // Open a transactional container
        ContainerConfig containerconfig = new ContainerConfig();
        containerconfig.Create = true;
        containerconfig.Transactional = true;
        using(Container container = mgr.OpenContainer(null, containerName,
                  containerconfig))
        {

            // Create an update context
            using(UpdateContext uc = mgr.CreateUpdateContext())
            {

                // Start a transaction
                using(Transaction txn = mgr.CreateTransaction())
                {

                    DocumentConfig docconfig = new DocumentConfig();

                    foreach(FileInfo file in files)
                    {
                        using(FileStream stream = file.OpenRead())
                        {

                            // Create a document
                            using(Document doc = mgr.CreateDocument())
                            {

                                doc.Name = file.Name;
                                doc.StreamContent = mgr.CreateInputStream(stream);
                                doc.SetMetaData(new MetaData("http://dbxmlExamples/timestamp",
                                    "timeStamp",
                                    new Value(System.DateTime.Now)));
                                container.PutDocument(txn, doc, uc, docconfig);
                                System.Console.WriteLine("Added " + file.Name + " to container " +
                                    containerName);
                            }
                        }
                    }

                    // Commit the index adds
                    txn.Commit();
                }
            }
        }
    }
コード例 #9
0
ファイル: addIndex.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Start a transaction
                    using(Transaction txn = mgr.CreateTransaction())
                    {

                        // Create an update context
                        using(UpdateContext uc = mgr.CreateUpdateContext())
                        {
                            // Add an string equality index for the "product" element node.
                            addIndex(container, "", "product", "node-element-equality-string",
                                txn, uc);
                            // Add an edge presence index for the product node
                            addIndex(container, "", "product", "edge-element-presence", txn, uc);

                            // Commit the index adds
                            txn.Commit();
                        }
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error adding index to container " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #10
0
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Create a context and declare the namespaces
                    using(QueryContext context = mgr.CreateQueryContext())
                    {
                        context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                        context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                        context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                        // Get details on Zulu Nuts
                        getDetails(mgr, "collection(\"" + theContainer +
                            "\")/fruits:item/product[text() = 'Zulu Nut']", context);

                        // Get details on all vegetables that start with 'A'
                        getDetails(mgr, "collection(\"" + theContainer +
                            "\")/vegetables:item/product[starts-with(text(),'A')]",
                            context);
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing query against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #11
0
ファイル: queryWithContext.cs プロジェクト: skitsanos/WDK9
    public static void Main(string[] args)
    {
        string envdir = parseArguments(args);

        try
        {
            // Open an environment and manager
            using(Manager mgr = CreateManager(envdir))
            {

                // Open a transactional container
                ContainerConfig containerconfig = new ContainerConfig();
                containerconfig.Transactional = true;
                using(Container container = mgr.OpenContainer(null, theContainer,
                          containerconfig))
                {

                    // Create a context and declare the namespaces
                    using(QueryContext context = mgr.CreateQueryContext())
                    {
                        context.SetNamespace("fruits", "http://groceryItem.dbxml/fruits");
                        context.SetNamespace("vegetables", "http://groceryItem.dbxml/vegetables");
                        context.SetNamespace("desserts", "http://groceryItem.dbxml/desserts");

                        // Set a variable
                        context.SetVariableValue("aDessert",
                            new Value("Blueberry Boy Bait"));

                        // Perform the queries

                        // Find all the Vendor documents in the database. Vendor documents do
                        // not use namespaces, so this query returns documents.
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")/vendor", context);

                        // Find the product document for "Lemon Grass".
                        // This query returns no documents
                        // because a namespace prefix is not identified for the 'item' node.
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")/item/product[.=\"Lemon Grass\"]", context);

                        // Find the product document for "Lemon Grass" using the namespace
                        // prefix 'fruits'. This query successfully returns a document.
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")/fruits:item/product[.=\"Lemon Grass\"]", context);

                        // Find all the vegetables
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")/vegetables:item", context);

                        // Find the dessert called Blueberry Boy Bait.
                        // Note the use of a variable.
                        doContextQuery(mgr, "collection(\"" + theContainer +
                            "\")/desserts:item/product[.=$aDessert]", context);
                    }
                }
            }
        }
        catch(DbXmlException e)
        {
            System.Console.WriteLine("Error performing query against " + theContainer);
            System.Console.WriteLine(e.ToString());
        }
    }
コード例 #12
0
ファイル: Manager.cs プロジェクト: skitsanos/WDK9
 public Container OpenContainer(Transaction txn, string name, ContainerConfig config)
 {
     return Container.Create(this.mgr_.openContainer(Transaction.ToInternal(txn), name, config.Flags));
 }
コード例 #13
0
ファイル: Manager.cs プロジェクト: skitsanos/WDK9
 public Container CreateContainer(Transaction txn, string name, ContainerConfig config)
 {
     return Container.Create(this.mgr_.createContainer(Transaction.ToInternal(txn), name, config.Flags, config.RawType, config.Mode));
 }
コード例 #14
0
ファイル: Manager.cs プロジェクト: skitsanos/WDK9
 public Container CreateContainer(Transaction txn, string name, ContainerConfig config)
 {
     return(Container.Create(this.mgr_.createContainer(Transaction.ToInternal(txn), name, config.Flags, config.RawType, config.Mode)));
 }
コード例 #15
0
ファイル: Manager.cs プロジェクト: skitsanos/WDK9
 public Container OpenContainer(Transaction txn, string name, ContainerConfig config)
 {
     return(Container.Create(this.mgr_.openContainer(Transaction.ToInternal(txn), name, config.Flags)));
 }