我正在开发一个 .NET 应用程序,其中使用 SQLite 和 SpatiaLite 进行空间数据处理。要启用所有 SpatiaLite 功能,我需要将 SPATIALITE_SECURITY 环境变量显式设置为relaxed。
但是,我不确定如何在 .NET 应用程序中设置此环境变量,以便它正确应用于 SQLite/SpatiaLite。
有人可以指导我如何在 .NET 中正确执行此操作吗?
这是我到目前为止所尝试过的:
using (var connection = new SqliteConnection($"Data Source={_dbPath}"))
{
connection.Open();
connection.EnableExtensions(true);
SqliteCommand? command = connection.CreateCommand();
// Load SpatiaLite extension
command.CommandText = "SELECT load_extension('mod_spatialite')";
command.ExecuteNonQuery();
//TRIED THIS BUT IT IS NOT WORKING
command.CommandText = "SET SPATIALITE_SECURITY='relaxed'";
command.ExecuteNonQuery();
}
SPATIALITE_SECURITY
是一个环境变量,所以你应该将其设置为一个。您可以尝试对当前进程使用 Environment.SetEnvironmentVariable
:
Environment.SetEnvironmentVariable("SPATIALITE_SECURITY", "relaxed");
但可以说更正确的方法是使用运行代码的计算机上操作系统提供的方法进行全局设置。