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

CreateFile() private static method

private static CreateFile ( string connectionString, string>.IDictionary metadata ) : void
connectionString string
metadata string>.IDictionary
return void
        private static void CreateFile(string connectionString, IDictionary<string, string> metadata)
        {
            var csb = new SQLiteConnectionStringBuilder(connectionString);
            if (File.Exists(csb.DataSource))
                File.Delete(csb.DataSource);

            using (var cn = new SQLiteConnection(connectionString))
            {
                cn.Open();
                using (var cmd = cn.CreateCommand())
                {
                    cmd.CommandText =
                        "CREATE TABLE metadata (name text, value text);"
                        + "CREATE TABLE tiles (zoom_level integer, tile_column integer, tile_row integer, tile_data blob);"
                        + "CREATE UNIQUE INDEX idx_tiles ON tiles (zoom_level, tile_column, tile_row);";
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "INSERT INTO metadata VALUES (?, ?);";
                    var pName = new SQLiteParameter("PName", DbType.String); cmd.Parameters.Add(pName);
                    var pValue = new SQLiteParameter("PValue", DbType.String); cmd.Parameters.Add(pValue);

                    if (metadata == null || metadata.Count == 0)
                    {
                        metadata = new Dictionary<string, string>();
                    }
                    if (!metadata.ContainsKey("bounds"))
                        metadata.Add("bounds", "-180,-85,180,85");

                    //if (!metadata.ContainsKey("type")) metadata.Add("type", "baselayer");
                    //if (!metadata.ContainsKey("format")) metadata.Add("type","png");
                    //if (!metadata.ContainsKey("minzoom")) metadata.Add("minzoom", "1");
                    //if (!metadata.ContainsKey("maxzoom")) metadata.Add("maxzoom", "20");

                    foreach (var kvp in metadata)
                    {
                        pName.Value = kvp.Key;
                        pValue.Value = kvp.Value;
                        cmd.ExecuteNonQuery();
                    }
                }
            }
        }