gpt4 book ai didi

SQL 的 "Insert Into"正在工作......但不是

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:02 25 4
gpt4 key购买 nike

所以这是一段时间以来我不得不处理的最令人沮丧的编码问题之一。

我一直通过自动化制作小型数据库,我一直使用这种方法,而且我总是能够通过使用“显示表​​数据”立即看到结果

所以我有 1000 个文件都包含几行数据,我的脚本遍历文件并将相关数据上传到数据库。

我的程序可以很好地读取数据,可以很好地将数据插入表中(或者说可以),但是 .mdf 不会更新,并且在程序退出后 - 始终保存 0 行数据。

我已经在两台不同的计算机上尝试了我的常规方法(我已经成功使用了十几次),但没有成功。

所以数据库一开始什么都没有。

代码如下:

  Using check2 As New SqlClient.SqlCommand("Select Count (*) From Drops", con)
MsgBox(check2.ExecuteScalar)
//This returns 0
End Using

For Each newfile As String In Directory.GetFiles(fileLoc)
//A lot of uninteresting code
Using con As New System.Data.SqlClient.SqlConnection(connStr)
con.Open()
Using check As New SqlClient.SqlCommand("SELECT COUNT(*) FROM Drops WHERE Time='" & time & "' AND Lat='" & theLat & "' AND Long='" & theLong & "'", con)

If check.ExecuteScalar = 0 Then
Using Update As New SqlClient.SqlCommand("INSERT INTO Drops(Vendor, Model, AndVer, Time, SubType, Lat, Long, LAC, CellID) VALUES('" & Vendor & "','" & Model & "','" & AndroidVer & "','" & time & "','" & SubType & "'," & theLat & "," & theLong & "," & LAC & ",'" & cellID & "')", con)
Update.ExecuteNonQuery()
added += 1
End Using
End If
End Using
End Using
Next

Using check3 As New SqlClient.SqlCommand("Select Count (*) From Drops", con)
MsgBox(check3.ExecuteScalar)
//This returns over 1000
End Using

所以我知道 INSERT 命令有效,因为 check3 在脚本开头报告 0 时从“Drops”返回 1000 个条目。所以我的问题是 - 所有数据都去哪儿了???

mdf 文件似乎永远不会更新,每次我在脚本结束后返回它们时,它们总是包含 0 个条目 - 我已经检查了位于 bin 和主项目本身中的 mdf 文件。是否有我不小心按到的设置或开关?

更奇怪的是,我认为这可能是一个调试问题 - 所以我发布了这个项目,认为它会在它离开调试环境后开始保存数据 - 但不是。无论写入多少文件,mdf 文件都不会超过 3mb(空白)。

任何帮助总是非常感谢,谢谢, -Z

最佳答案

我打赌你正在以这种方式使用连接字符串

Dim connStr As String = "Server=your_server;Database=|DataDirectory|\name_of_db;User Id=user_name;Password=my_password"

或者如果它位于您的config.file

<connectionStrings>
<add name="ConnString"
connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\yourDatabase.mdf;Integrated Security=True" />
</connectionStrings>

如果是这样,请记住有时 Data Source=|DataDirectory|\... 在调试时会出现问题。请记住,当您调试代码时,您将在项目文件夹的 \bin\debug 中拥有另一个数据库。可能您正在更新此数据库中的记录而不是原始记录。

尝试设置绝对路径,检查记录是否被更新。

ConnectionString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\yourProjectFolder\YourDBName.mdf;Integrated Security=True"

有一个属性Copy to Output Directory,默认值是Copy if newer(如果你使用的是.mdf.mdb 文件,默认值为Copy always)。你可以检查这个 MSDN document 以了解此属性的含义。简而言之,本地数据库文件将被复制到输出目录,该数据库将被更新。

如果您不希望 Visual Studio 为您复制数据库文件,您可以将 Copy to Output Directory 属性设置为 Do not copy。然后由您选择何时以及如何覆盖数据库文件。当然,您仍然需要数据库文件的两份副本:在设计时,您正在使用解决方案目录中的数据库文件,而在运行时,您正在修改输出目录中的数据库文件。

关于SQL 的 "Insert Into"正在工作......但不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com