/// <summary>
        /// Insert an item into the table and return the primary key value created for this new item.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public Int64 InsertItem(TItemType item)
        {
            Int64 result = -1;

            lock (Lock)
            {
                using (var statement = sqlConnection.Prepare(GetInsertItemSql()))
                {
                    this.FillInsertItemStatement(statement, item);
                    SQLiteResult output = statement.Step();

                    if (output != SQLiteResult.DONE)
                    {
                        string foo = sqlConnection.ErrorMessage();
                        throw new Exception(output.ToString());
                    }

                    result = (Int64)sqlConnection.LastInsertRowId();
                }
            }

            return(result);
        }
        public long Insert(string table, Dictionary <string, object> contentValues)
        {
            if (String.IsNullOrWhiteSpace(table) || contentValues == null || contentValues.Keys.Count == 0)
            {
                throw new InvalidOperationException("Must specify a table and provide content to insert");
            }
            string columns            = String.Join(", ", contentValues.Keys);
            var    valueBindingString = new StringBuilder();

            for (int i = 0, max = contentValues.Count; i < max; i++)
            {
                valueBindingString.Append("?");
                if ((i + 1) < max)
                {
                    valueBindingString.Append(", ");
                }
            }
            string sql = String.Format(InsertStatement,
                                       table,
                                       columns,
                                       valueBindingString);

            using (ISQLiteStatement stmt = _sqlConnection.Prepare(sql))
            {
                int count = 1;
                foreach (string key in contentValues.Keys)
                {
                    stmt.Bind(count, contentValues[key]);
                    count++;
                }
                var result = stmt.Step();
            }
            long insertId = _sqlConnection.LastInsertRowId();

            return(insertId);
        }
 public long LastInsertRowId()
 {
     return(_connection.LastInsertRowId());
 }