Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 获取项目目录中文件的物理路径_Vb.net_Visual Studio_Visual Studio 2010 - Fatal编程技术网

Vb.net 获取项目目录中文件的物理路径

Vb.net 获取项目目录中文件的物理路径,vb.net,visual-studio,visual-studio-2010,Vb.net,Visual Studio,Visual Studio 2010,我正在使用Environment.CurrentDirectory获取当前目录,即“D:\Chuttu\Projects\LIC\bin\Debug” 但是,我想删除“\bin\Debug” 我该怎么做?或者有什么方法可以让我把目录升级到“LIC\” 实际上,这是我的连接字符串: Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\LIC.mdf;Integrated Security=True;Connect Timeout=30

我正在使用
Environment.CurrentDirectory
获取当前目录,即“D:\Chuttu\Projects\LIC\bin\Debug”

但是,我想删除“\bin\Debug”

我该怎么做?或者有什么方法可以让我把目录升级到“LIC\”

实际上,这是我的连接字符串:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
但是当我使用它并尝试将数据插入数据库时,数据不会被插入。当我将连接字符串与物理路径一起使用时,它开始工作:

Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Chuttu VB\Projects\LIC\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
我试图获取
mdf
文件的物理路径,并在连接字符串中使用它


编辑:

这段代码运行良好:

Private Sub save()
        Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Chuttu VB\Projects\LIC\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")

        Dim sql As New SqlClient.SqlCommand("INSERT INTO ProposerDetails " & _
                                            "VALUES (" & Convert.ToInt32(PolicyNumberTextBox.Text) & ",'" & NameTextBox.Text & "','" & AgeTextBox.Text & "','" & PhoneTextBox.Text & "','" & AddressTextBox.Text & "','" _
                                            & NomineeTextBox.Text & "','" & NomineeRelationTextBox.Text & "'," & PlanID() & ",'" & PolicyTermTextBox.Text & "','" & PremiumAmountTextBox.Text & "','" _
                                            & PremiumTypeComboBox.Text & "','" & SumProposedTextBox.Text & "','Date' )", con)

        MsgBox(sql.CommandText)
        con.Open()

        MsgBox(con.State.ToString)
        Dim i As Integer = sql.ExecuteNonQuery
        MsgBox(i.ToString)
        con.Close()
        sql.Dispose()
        con.Dispose()
        ToolStripStatusLabelMessage.Text = "Saved"
    End Sub
一旦我将连接字符串从app.config更改为连接字符串,它就会停止工作(向DB添加数据):

注意:没有错误。

您可以尝试:

string dataDirectory = AppDomain.CurrentDomain.BaseDirectory;
参考:

您可以尝试:

string dataDirectory = AppDomain.CurrentDomain.BaseDirectory;
参考:


在visual studio中转到MDF文件的属性(假设已将其作为项目的一部分添加)。将“复制到输出目录”设置为“更新时复制”。有关更多信息,请参阅


编辑:只是为了澄清这不会得到您的基本目录,它只是确保您的数据库最终与您的可执行文件一起出现在文件夹中,因此相对路径将起作用。

转到visual studio中MDF文件的属性(假设您已将其作为项目的一部分添加)。将“复制到输出目录”设置为“更新时复制”。有关更多信息,请参阅


编辑:只是为了澄清这不会得到您的基本目录,它只是确保您的数据库最终与您的可执行文件一起位于文件夹中,因此相对路径将起作用。

您确定要最终的可执行文件向上导航两个目录以查找其数据库吗?此外,较新版本的Windows要求具有管理员权限,才能将应用程序自己的文件夹写入c:\Program Files中。显然,他们希望您将内容存储在c:\ProgramData或其他文件中。

您确定要将最终可执行文件导航到两个目录以查找其数据库吗?此外,较新版本的Windows要求具有管理员权限,才能将应用程序自己的文件夹写入c:\Program Files中。显然,他们希望您将内容存储在c:\ProgramData或其他格式中。

您的连接字符串没有问题。问题是,每次运行应用程序时,它都会使用项目中包含的mdf的新副本。查看有关该问题的信息。

您的连接字符串没有问题。问题是,每次运行应用程序时,它都会使用项目中包含的mdf的新副本。看看这个问题。

这是为了回答您关于项目当前路径或目录的问题。您可以使用REPLACE函数删除“\bin\Debug\”部分,如下所示:

Dim路径作为字符串
path=My.Application.Info.DirectoryPath

Dim path1为String=path.Replace(“\bin\Debug”,“\”)

这是为了回答您关于项目当前路径或目录的问题。您可以使用REPLACE函数删除“\bin\Debug\”部分,如下所示:

Dim路径作为字符串
path=My.Application.Info.DirectoryPath

Dim path1为String=path.Replace(“\bin\Debug”,“\”)

这将使我进入调试目录…我想要根目录。但一旦部署应用程序,路径将是正确的。Visual Studio从
Debug
Release
文件夹运行代码;这是基本目录。您可以在.mdf文件上打开“复制到输出目录”,或者创建一个带有数据库路径的设置,如果您需要在测试时保留数据库更改,则可以使用该设置而不是硬编码。这将使我进入调试目录…我想要根目录。但一旦部署应用程序,路径将是正确的。Visual Studio从
Debug
Release
文件夹运行代码;这是基本目录。您可以在.mdf文件上打开“复制到输出目录”,或者创建一个带有数据库路径的设置,如果需要在测试时保留数据库更改,可以使用该设置而不是硬编码。首先,您显示的路径是正确的。。因为它总是显示启动应用程序的路径。。有道理。。?我建议将SqlConnection字符串之类的内容放入app.config文件或您正在使用的任何.config文件中。这是一个很好的网站,介绍了如何格式化连接字符串,还可以移动MDF文件的路径/位置。在更新之后,您引入了一组新的“非常糟糕的想法”——SQL注入倾向、内联SQL、硬编码连接字符串、缺少使用语句的
。我认为你试图解决错误的问题。稍微重构一下可能会有很大帮助。@Cory当我使用app.config连接字符串时……数据不会保存到数据库中。首先,您显示的路径是正确的。。因为它总是显示启动应用程序的路径。。有道理。。?我建议将SqlConnection字符串之类的内容放入app.config文件或您正在使用的任何.config文件中。这是一个很好的网站,介绍了如何格式化连接字符串,还可以移动MDF文件的路径/位置。在更新之后,您引入了一组新的“非常糟糕的想法”——SQL注入倾向、内联SQL、硬编码连接字符串、缺少使用
语句的
。我认为你试图解决错误的问题。稍微进行一点重构可能会有很大帮助。@Cory当我使用app.config连接字符串时……数据不会保存到DB.MsgBox()中,请取出两个连接字符串,看看它们是什么样子?您是否依赖数据库引擎来解码| DataDirectory |?那是怎么定下来的