質問
Dim conn As OleDbConnection
Dim cmd As OleDbCommand
Public Sub openDB()
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\VFMS_DB.mdb;" & "Jet OLEDB:System Database=Security.mdw;User ID=Adster;Password=300624;")
conn.Open()
End Sub
Public Function UpdateUser() As Integer
Dim retCode As New Integer
Try
openDB()
cmd = conn.CreateCommand()
の更新は以下のコマンドを常に与えてくれたこのエラー:"からの転換文字列"の場[Username]='"タイプでダブル"は無効です。"というのではないでしょうか。のaUserNameフィールドは文字列の分野かチェックしてください入力されます。
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & "', [Last Name] = '" & aSurname & "', [Contact Number] = '" & aContactNum & "', [Password] = '" & aPassword & "', [User Rights] = '" & aUserRights + "' WHERE [Username] = '" + aUserName + "' "
cmd.ExecuteNonQuery()
conn.Close()
'rsAddRecs = rsConn.Execute("UPDATE Users ([First Name], [Last Name], [Contact Number], [User Name], [Password], [User Rights]) VALUES ('" & aName & "','" & aSurname & "','" & aContactNum & "','" & aUserName & "','" & aPassword & "','" & aUserRights & "')")
retCode = 0
'rsConn.Close()
Return retCode
Catch ex As Exception
MessageBox.Show(ex.ToString, ex.Message, MessageBoxButtons.OK)
retCode = 1
Return retCode
End Try
End Function
解決
お持ちの誤植です。しましょう + concatは、末尾の文字のsql文字列の代わりに & 文字
間違った
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _
"', [Last Name] = '" & aSurname & _
"', [Contact Number] = '" & aContactNum & _
"', [Password] = '" & aPassword & "', [User Rights] = '" & _
aUserRights + "' WHERE [Username] = '" + aUserName + "' "
' ^ ^ ^
右
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _
"', [Last Name] = '" & aSurname & _
"', [Contact Number] = '" & aContactNum & _
"', [Password] = '" & aPassword & "', [User Rights] = '" & _
aUserRights & "' WHERE [Username] = '" & aUserName & "' "
' ^ ^ ^
他のヒント
あなたSQLコードは[Username]
を使用します:
cmd.CommandText = "UPDATE Users SET ... [Username]...
あなたは、コード使用[User Name]
をコメントアウトに対します:
'rsAddRecs = rsConn.Execute("UPDATE Users ... [User Name]...
間違った列名は、問題の原因だろうか?
もう一つの思考:あなたは、パラメータ値を消毒している例値は、動的SQLを動揺される単一引用符を含めることができます。いずれにせよ、私はあなたがそれによってもちろんより主題についての詳細を知っているOLE DBプロバイダへのパラメータ値の消毒を、延期、(偶数またはプロシージャ)プリペアドステートメントを使用してSQLを呼び出すためにParameterオブジェクトを使用して検討すべきだと思いますあなたやI:)
所属していません StackOverflow