我写了一个程序来轻松存储/编辑我的漫画集。我可以通过我的更新声明添加,删除和请求任何内容(漫画/角色/团队)不起作用。我在访问数据库中的查询中创建了一个副本,并且完美无缺。最奇怪的是,我的程序没有给出任何错误,它完成了事务,但没有更改数据库中的数据。 (这是漫画,角色和团队更新的问题)。
这是我更新漫画的代码。
Public Sub UpdateComic(comic As Comic)
Dim cn As New OleDbConnection(persistenceController.connectiestring)
Dim cmd As New OleDbCommand("UPDATE tblComics SET serie = @serie, volume = @volume, issue = @issue, release = @release, inpossession = @inpossession, timesread = @read, story = @story, Languages = @languages WHERE ID = @ID", cn)
cmd.Parameters.AddWithValue("serie", comic.Serie)
cmd.Parameters.AddWithValue("volume", comic.Volume)
cmd.Parameters.AddWithValue("issue", comic.Issue)
cmd.Parameters.AddWithValue("release", comic.Release)
cmd.Parameters.AddWithValue("inpossession", comic.InPossession)
cmd.Parameters.AddWithValue("read", comic.Read)
cmd.Parameters.AddWithValue("story", comic.story)
cmd.Parameters.AddWithValue("ID", comic.ID)
cmd.Parameters.AddWithValue("Languages", comic.Language)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
End Sub
任何人都可以帮助我。 提前谢谢。
答案 0 :(得分:4)
切换添加到OleDbParameterCollection
的最后两个参数的位置cmd.Parameters.AddWithValue("Languages", comic.Language)
cmd.Parameters.AddWithValue("ID", comic.ID)
OleDb不会通过他们的名字识别参数,而是根据他们的位置。您应该按照命令文本
中参数占位符定义的确切顺序添加参数 顺便说一下。 OleDb希望使用单个问号字符(?)定义其占位符参数,但MS-Access也接受语法@name
,可能与其大表兄弟Sql Server具有更好的升级兼容性。