我希望我的代码只从项目文件夹开始的相对路径而不是绝对路径获取sql脚本。我正在使用Web窗体,并计划在服务器上发布此代码,因此我需要按路径取消引用。
CurrentDomain.BaseDirectory:
"C:\\Users\\username\\Documents\\folder_name\\project_name\\project_name\\"
抓取文件时的外观:
"C:\\Users\\username\\Documents\\folder_name\\project_name\\project_name\\sql_script"
我希望它看起来像什么:
"project_name\\sql_script"
或类似的东西
using (SqlConnection mer = new SqlConnection(@"Data Source = server_address; Initial Catalog = server_name; Integrated Security=SSPI"))
{
{
mer.Open();
string path = Server.MapPath("~/mergeSQL.sql");
string mergeScript = System.IO.File.ReadAllText( path);
System.Collections.Generic.IEnumerable<string> commandStrings = Regex.Split(mergeScript, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);
foreach (string commandString in commandStrings)
{
if (commandString.Trim() != "")
{
using (var command = new SqlCommand(commandString, mer))
{
command.ExecuteNonQuery();
}
Label2.Text = "Query merged";
}
}
}
}
}
1条答案
按热度按时间bf1o4zei1#
windows文件名是好的,只是一个完整的路径字符串。
因此,如果您的网站中有一个文件夹,请说:
而对于基于Web的应用程序,则是自动执行的
然而,当然文件夹不会是公共。
并记住标记,基于网页的网址和代码背后的区别。
STILL = plain jane完整Windows路径名称背后的代码。
因此,在代码中,您可以获得基本站点和路径--而不管项目在何处或哪个服务器上运行。
以上代码将返回FULL限定的完整Windows路径名。
虽然网站的网址可能会受到限制,但代码背后是没有和100%忽略网站的安全设置。
因此,虽然上面的不是相对路径名,但您不必在意,因为它将被转换为一个完整的法律的路径名,正如我所指出的,后面的所有代码都将使用它(一个简单的plane jane完全限定的windows路径名)。
所以,
因此,您可以通过使用Server.MapPath获得法律的的文件名+完整路径