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();
}
}
}
}