예제 #1
0
        private static void AddRows(sqlite3 handle, LiteTableBuilder table)
        {
            var    columns = table.Columns;
            string query   = GetTableQuery(table.Name, Array.ConvertAll(columns, c => c.Name));
            var    stmt    = SQLite3.Prepare2(handle, query);

            try {
                while (SQLite3.Step(stmt) == SQLite3.Result.Row)
                {
                    var row = table.AddRow();
                    for (int i = 0; i < columns.Length; i++)
                    {
                        var column = columns[i];
                        switch (column.Type)
                        {
                        case ColumnType.Int32:
                            row.Write(i, SQLite3.ColumnInt(stmt, i));
                            break;

                        case ColumnType.Single:
                            row.Write(i, (float)SQLite3.ColumnDouble(stmt, i));
                            break;

                        case ColumnType.String:
                            row.Write(i, SQLite3.ColumnString(stmt, i));
                            break;
                        }
                    }
                }
            } finally {
                SQLite3.Finalize(stmt);
            }
        }
예제 #2
0
        public LiteTableBuilder AddTable(string name, Column[] columns, int rowLength)
        {
            if (!tables.TrueForAll(t => t.Name != name))
            {
                throw new Exception();
            }

            var table = new LiteTableBuilder(this, name, columns, rowLength);

            tables.Add(table);

            AddString(name);
            foreach (var column in columns)
            {
                AddString(column.Name);
            }

            return(table);
        }
예제 #3
0
 public RowBuilder(LiteTableBuilder table, byte[] data)
 {
     this.table = table;
     this.data  = data;
 }