Example #1
0
    static Task <CAsyncDBHandler.SQLExeInfo>[] TestBatch(CSqlite sqlite, List <KeyValue> ra)
    {
        var             v      = new Task <CAsyncDBHandler.SQLExeInfo> [2];
        CDBVariantArray vParam = new CDBVariantArray();

        vParam.Add(1); //ID
        vParam.Add(2); //EMPLOYEEID
        //there is no manual transaction if isolation is tiUnspecified
        v[0] = sqlite.executeBatch(tagTransactionIsolation.tiUnspecified,
                                   "Select datetime('now');select * from COMPANY where ID=?;select * from EMPLOYEE where EMPLOYEEID=?",
                                   vParam, (handler, rowData) =>
        {
            //rowset data come here
            int last      = ra.Count - 1;
            KeyValue item = ra[last];
            item.Value.AddRange(rowData);
        }, (handler) =>
        {
            //rowset header meta info comes here
            KeyValue item = new KeyValue(handler.ColumnInfo, new CDBVariantArray());
            ra.Add(item);
        });
        vParam.Clear();
        vParam.Add(1); //ID
        vParam.Add(2); //EMPLOYEEID
        vParam.Add(2); //ID
        vParam.Add(3); //EMPLOYEEID
        //Same as sqlite.BeginTrans();
        //Select datetime('now');
        //select * from COMPANY where ID=1;
        //select * from COMPANY where ID=2;
        //Select datetime('now');
        //select * from EMPLOYEE where EMPLOYEEID=2;
        //select * from EMPLOYEE where EMPLOYEEID=3
        //ok = sqlite.EndTrans(tagRollbackPlan.rpDefault);
        v[1] = sqlite.executeBatch(tagTransactionIsolation.tiReadCommited,
                                   "Select datetime('now');select * from COMPANY where ID=?;Select datetime('now');select * from EMPLOYEE where EMPLOYEEID=?",
                                   vParam, (handler, rowData) =>
        {
            //rowset data come here
            int last      = ra.Count - 1;
            KeyValue item = ra[last];
            item.Value.AddRange(rowData);
        }, (handler) =>
        {
            //rowset header meta info comes here
            KeyValue item = new KeyValue(handler.ColumnInfo, new CDBVariantArray());
            ra.Add(item);
        });
        return(v);
    }