(asp.net)我的sql-code(更新语句)在数据库中工作,但不在程序中

时间:2014-07-24 15:25:23

标签: asp.net sql database vb.net ms-access

我写了一个程序来轻松存储/编辑我的漫画集。我可以通过我的更新声明添加,删除和请求任何内容(漫画/角色/团队)不起作用。我在访问数据库中的查询中创建了一个副本,并且完美无缺。最奇怪的是,我的程序没有给出任何错误,它完成了事务,但没有更改数据库中的数据。 (这是漫画,角色和团队更新的问题)。

这是我更新漫画的代码。

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

任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:4)

切换添加到OleDbParameterCollection

的最后两个参数的位置
cmd.Parameters.AddWithValue("Languages", comic.Language)
cmd.Parameters.AddWithValue("ID", comic.ID)

OleDb不会通过他们的名字识别参数,而是根据他们的位置。您应该按照命令文本

中参数占位符定义的确切顺序添加参数 顺便说一下。 OleDb希望使用单个问号字符(?)定义其占位符参数,但MS-Access也接受语法@name,可能与其大表兄弟Sql Server具有更好的升级兼容性。