我正在使用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添加数据):
Private Sub save()
Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\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
注意:我没有错误。
答案 0 :(得分:3)
答案 1 :(得分:2)
您确定要将最终的可执行文件导航到两个目录以查找其数据库吗?此外,较新版本的Windows要求管理员权限在c:\ Program Files中写入应用程序自己的文件夹。显然,他们希望你将东西存储在c:\ ProgramData中。
答案 2 :(得分:1)
转到Visual Studio中MDF文件的属性(假设您已将其添加为项目的一部分)。将“复制到输出目录”设置为“如果更新则复制”。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx。
编辑:只是为了澄清这不会得到您的基本目录,它只是确保您的数据库最终在您的可执行文件的文件夹中,因此相对路径将起作用。
答案 3 :(得分:0)
您的连接字符串没有问题。问题是,每次运行应用程序时,它都会使用项目中包含的mdf的新副本。请查看有关此问题的this blog post。