我有一个奇怪的问题:我试图做一些基本程序在数据库中插入数据而我不知道它发生了什么,但它不起作用。
问题是我有一个名为prova3
的数据库,它是一个使用vb.net 2013创建的SQL Server 2012数据库,其中包含一个名为tabela
的表。我创建了一个数据集来查看存储在app.config
中的连接字符串。字符串在下面是相同的。我没有收到错误,但未插入数据。当我转到服务器资源管理器查看表中的数据时,它是空的。
我认为这些数据已保存在其他地方,但我不知道如何修复它,因为我认为我编码正确。这是为vb.net,但我为asp.net做了相同的代码,它的工作原理。怪异。
你能帮帮我吗?
在表单中,它只有一个textbox1和一个button1控件。没有更多的代码。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ImageUrlSt As String
Dim command1 As New SqlCommand
Dim con As New SqlConnection
ImageUrlSt = TextBox1.Text
Try
con.ConnectionString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Prova3.mdf;Integrated Security=True"
con.Open()
command1.Connection = con
command1.CommandText = "INSERT INTO Tabela (imageurl) VALUES (@imageurlst)"
command1.Parameters.Add(New SqlParameter("@imageurlst", ImageUrlSt))
command1.ExecuteNonQuery()
MsgBox("News Saved Succesfully")
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
答案 0 :(得分:2)
有时|DataDirectory|
路径在调试时会出现问题。您是否在\bin\debug
检查了数据库副本?
有一个属性Copy to Output Directory
,默认值为Copy if newer
(如果您使用的是.mdf或.mdb文件,则默认值为Copy always
)。您可以查看 MSDN document 以了解此属性的含义。简而言之,本地数据库文件将被复制到Output目录,而THAT数据库将被更新。
如果您不希望Visual Studio为您复制数据库文件,则可以将“复制到Output Directory
”属性设置为Do not copy
。然后,您可以选择何时以及如何覆盖数据库文件。当然,您仍然需要两个数据库文件副本:在设计时,您正在使用解决方案目录中的数据库文件,而在运行时,您正在修改输出目录中的数据库文件。
另一种选择是在ConnectionString上使用绝对路径
con.ConnectionString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\MyProjectFolder\Prova3.mdf;Integrated Security=True"