0

我有一个包含两个选项卡的 Windows 窗体。第一个选项卡用于保存图像,第二个选项卡用于检索。我的源图片也在我的 bin 项目地址中,如下所示:

C:\Users\BlackRose\Documents\Visual Studio 2012\Projects\RealState\RealState\bin\Debug\HomePics

现在我想知道如何将图片地址保存到 sql server 并检索它们,即使我改变了我的项目位置......

我已经尝试过这些代码:

string path;    
public myForm()
{
    path = Environment.CurrentDirectory.ToString() + "\\HomePics";
    openFileDialog1.InitialDirectory = path;
}

然后在函数中编写一些sql和c#代码并保存imagePath和imageName,保存它们没有问题。但我确定我必须配置路径来设置相对路径,因为保存在 db 中的路径字符串是这样的:

C:\Users\BlackRose\Documents\Visual Studio 2012\Projects\RealState\RealState\bin\Debug\HomePics\pic1.jpg

使用这种方法,当我想将我的项目文件夹移动到其他地方时会出现问题,并且 db 中的所有地址都将无用。

你能告诉我任何有用的方法,以便我可以在任何情况下检索它吗?

4

2 回答 2

1

您可以在保存到数据库 HomePics时用作文件夹名称,如下所示:Path

path = "\\HomePics\\pic1.jpg";

从数据库访问图像路径时,只需添加以下代码:

String strRelativePath=getRelativePathfromDB();//gives you \Home\pic1.jpg
String strAbsoluteFilePath= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\\", "")+strRelativePath;

所以最终strAbsoluteFilePath包含以下Absolute路径:

C:\Users\BlackRose\Documents\Visual Studio 2012\Projects\RealState\RealState\bin\Debug\HomePics\pic1.jpg

上述路径会根据location您执行项目的位置动态更改。

我希望这能解决你的问题:)

于 2013-11-15T10:21:06.903 回答
0

你可以做的是:

  1. 将相对路径保存在数据库中,即\HomePics示例中相对于(根文件夹)的路径(前提是所有文件都在该文件夹及其子文件夹中)。

  2. 在您的应用程序的配置文件中,添加一个设置来说明根文件夹的位置,例如在您的应用程序中<appSettings>您可以有一个条目<add key="ImagesRootFolder" value="C:\Images\HomePics" />。或者,您也可以将相同的信息保存在数据库中,与图像分开的表中。

于 2013-11-15T10:20:46.197 回答