コード例 #1
0
        private async Task <IList <string> > LoadTablesAsync()
        {
            using (var tableQuery = await SqliteFuncEvalQuery.CreateAsync(
                       this.inspectionContext,
                       this.sqliteInstanceName,
                       "SELECT name FROM sqlite_master WHERE type='table'"))
            {
                var tables = new List <String>();
                foreach (var t in await tableQuery.ExecuteAsync(int.MaxValue, CancellationToken.None))
                {
                    Debug.Assert(t.Length != 0, "All rows should have at least 1 column");
                    tables.Add(t.First());
                }

                return(tables);
            }
        }
コード例 #2
0
        private async Task <TableDetails> GetTableDetailsAsync(string table)
        {
            TableDetails details;

            if (!this.tableDetails.TryGetValue(table, out details))
            {
                // Escape string for sqlite - http://www.sqlite.org/lang_expr.html
                var escapedTableName = this.selectedTable.Replace("\"", "\\\"");
                escapedTableName = escapedTableName.Replace("'", "''");
                var query = await SqliteFuncEvalQuery.CreateAsync(
                    this.inspectionContext,
                    this.sqliteInstanceName,
                    $"SELECT * FROM '{escapedTableName}'");

                // Move off the main thread since we are about to do some code gen
                await TaskScheduler.Default;

                details = new TableDetails(this.selectedTable, query, this.modBuilder);
                this.tableDetails[table] = details;
            }

            return(details);
        }