csShared.Geo.Esri.MBTileCache.SaveImage C# (CSharp) Method

SaveImage() public method

public SaveImage ( int level, int row, int col, byte image ) : void
level int
row int
col int
image byte
return void
        public void SaveImage(int level, int row, int col, byte[] image)
        {
            try
            {
                //DbCommand cmd = _connection.CreateCommand();
                //cmd.CommandText = String.Format("INSERT INTO {0} VALUES(@Level, @Col, @Row, @Image);","tiles");
                using (var command = new SQLiteCommand(connection))
                {
                    command.CommandText = string.Format(
                        CultureInfo.InvariantCulture,
                        @"SELECT [tile_data] FROM [tiles] WHERE zoom_level = {0} AND tile_column = {1} AND tile_row = {2};",
                        level, col, row);
                    var tileObj = command.ExecuteScalar();
                    if (tileObj != null)
                    {
                        return; // Tile already cached ...
                    }
                }
                using (var cmd = connection.CreateCommand())
                {
                    cmd.CommandText = @"INSERT INTO tiles VALUES(@Level, @Col, @Row, @Image);";
                    var par = cmd.CreateParameter();
                    par.DbType = DbType.Int32;
                    par.ParameterName = "Level";
                    par.Value = level;
                    cmd.Parameters.Add(par);

                    var gRow = (int)((Math.Pow(2, level) - 1) - row);

                    par = cmd.CreateParameter();
                    par.DbType = DbType.Int32;
                    par.ParameterName = "Row";
                    par.Value = gRow;
                    cmd.Parameters.Add(par);

                    par = cmd.CreateParameter();
                    par.DbType = DbType.Int32;
                    par.ParameterName = "Col";
                    par.Value = col;
                    cmd.Parameters.Add(par);

                    par = cmd.CreateParameter();
                    par.DbType = DbType.Binary;
                    par.ParameterName = "Image";
                    par.Value = image;
                    cmd.Parameters.Add(par);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (SQLiteException e)
            {
                Logger.Log("MBTileCache", "Error adding tile", e.Message, Logger.Level.Error);
            }
            catch (Exception e)
            {
                Logger.Log("MBTileCache", "Error adding tile", e.Message, Logger.Level.Error);
            }
        }