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文件的属性(假设您已将其作为项目的一部分添加)。将“复制到输出目录”设置为“更新时复制”。有关更多信息,请参阅
编辑:只是为了澄清这不会得到您的基本目录,它只是确保您的数据库最终与您的可执行文件一起位于文件夹中,因此相对路径将起作用。您确定要最终的可执行文件向上导航两个目录以查找其数据库吗?此外,较新版本的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 |?那是怎么定下来的