Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中UPDATE语句access数据库中的语法错误_Vb.net_Ms Access - Fatal编程技术网

vb.net中UPDATE语句access数据库中的语法错误

vb.net中UPDATE语句access数据库中的语法错误,vb.net,ms-access,Vb.net,Ms Access,我刚开始学习VB.net有几个星期了。我想制作一个表单,并将数据从文本框发送到ms access数据库(*.accdb)文件中的特定单元格。但我编写的代码给出了以下错误: UPDATE语句中出现语法错误 我查了好几本书,花了好几个小时上网,但都没有答案 Dim con As New OleDb.OleDbConnection Dim ds As New DataSet Dim da As OleDb.OleDbDataAdapter Dim sql As Stri

我刚开始学习VB.net有几个星期了。我想制作一个表单,并将数据从文本框发送到ms access数据库(*.accdb)文件中的特定单元格。但我编写的代码给出了以下错误:

UPDATE语句中出现语法错误

我查了好几本书,花了好几个小时上网,但都没有答案

    Dim con As New OleDb.OleDbConnection
    Dim ds As New DataSet
    Dim da As OleDb.OleDbDataAdapter
    Dim sql As String
    Dim cnn1 As New OleDb.OleDbConnection
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=  
           E:\Ebook\hararat\GUI\Heat Exchanger Designer\heat.accdb"
    con.Open()
    sql = "SELECT * FROM flow1"
    da = New OleDbDataAdapter(sql, con)
    da.Fill(ds, "flow1")
    Dim cb As New OleDb.OleDbCommandBuilder(da)
    ds.Tables("flow1").Rows(1).Item(1) = "name"
    da.Update(ds, "flow1")
    con.Close()
试试这个

dim sqlupdate as string = "UPDATE tablename SET column_name = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
使用下列列名时有时会出现错误:用户名、密码、日期、时间,以及更多此类列名。请尽量避免使用这些列名,因为这可能会导致更新表时出现问题。使您能够更新此类列名,您需要用[and]将其括起来,因此它类似于:[Username]、[Date]等。因此语法可能如下所示:

UPDATE tablename SET [Username] = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
     Open_Con()
            Dim sqlUpdate As String
            Dim sqlUpdatePass As DialogResult
            sqlUpdate = "UPDATE tblAccounts SET [Password] = '" & txtRPassword.Text & "' WHERE [Username] = '" & txtUsername.Text & "'"
            sqlCmd = New OleDbCommand(sqlUpdate, sqlCon)
            Try
                sqlUpdatePass = MessageBox.Show("Are you sure to save this changes?", "Save changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If sqlUpdatePass = vbYes Then
                    sqlCmd.ExecuteNonQuery()
                    MsgBox("Changes are now saved", MsgBoxStyle.Information, "New password has been set.")
                    Call ClearAll()
                    Me.Hide()
                Else
                    Exit Sub
                End If
            Catch ex As Exception
                MsgBox("Could not perform this task because " & ex.Message, MsgBoxStyle.Exclamation, "Error")
            End Try
            sqlCmd = Nothing
            sqlCon.Close()
我的代码是这样的:

UPDATE tablename SET [Username] = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
     Open_Con()
            Dim sqlUpdate As String
            Dim sqlUpdatePass As DialogResult
            sqlUpdate = "UPDATE tblAccounts SET [Password] = '" & txtRPassword.Text & "' WHERE [Username] = '" & txtUsername.Text & "'"
            sqlCmd = New OleDbCommand(sqlUpdate, sqlCon)
            Try
                sqlUpdatePass = MessageBox.Show("Are you sure to save this changes?", "Save changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If sqlUpdatePass = vbYes Then
                    sqlCmd.ExecuteNonQuery()
                    MsgBox("Changes are now saved", MsgBoxStyle.Information, "New password has been set.")
                    Call ClearAll()
                    Me.Hide()
                Else
                    Exit Sub
                End If
            Catch ex As Exception
                MsgBox("Could not perform this task because " & ex.Message, MsgBoxStyle.Exclamation, "Error")
            End Try
            sqlCmd = Nothing
            sqlCon.Close()
希望上面提到的这些代码能帮助你解决问题。祝你有愉快的一天和愉快的编码:)

试试这个

dim sqlupdate as string = "UPDATE tablename SET column_name = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
使用下列列名时有时会出现错误:用户名、密码、日期、时间,以及更多此类列名。请尽量避免使用这些列名,因为这可能会导致更新表时出现问题。使您能够更新此类列名,您需要用[and]将其括起来,因此它类似于:[Username]、[Date]等。因此语法可能如下所示:

UPDATE tablename SET [Username] = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
     Open_Con()
            Dim sqlUpdate As String
            Dim sqlUpdatePass As DialogResult
            sqlUpdate = "UPDATE tblAccounts SET [Password] = '" & txtRPassword.Text & "' WHERE [Username] = '" & txtUsername.Text & "'"
            sqlCmd = New OleDbCommand(sqlUpdate, sqlCon)
            Try
                sqlUpdatePass = MessageBox.Show("Are you sure to save this changes?", "Save changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If sqlUpdatePass = vbYes Then
                    sqlCmd.ExecuteNonQuery()
                    MsgBox("Changes are now saved", MsgBoxStyle.Information, "New password has been set.")
                    Call ClearAll()
                    Me.Hide()
                Else
                    Exit Sub
                End If
            Catch ex As Exception
                MsgBox("Could not perform this task because " & ex.Message, MsgBoxStyle.Exclamation, "Error")
            End Try
            sqlCmd = Nothing
            sqlCon.Close()
我的代码是这样的:

UPDATE tablename SET [Username] = '" & textname.text & "' WHERE column_name = '" & textname.text & "'"
     Open_Con()
            Dim sqlUpdate As String
            Dim sqlUpdatePass As DialogResult
            sqlUpdate = "UPDATE tblAccounts SET [Password] = '" & txtRPassword.Text & "' WHERE [Username] = '" & txtUsername.Text & "'"
            sqlCmd = New OleDbCommand(sqlUpdate, sqlCon)
            Try
                sqlUpdatePass = MessageBox.Show("Are you sure to save this changes?", "Save changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If sqlUpdatePass = vbYes Then
                    sqlCmd.ExecuteNonQuery()
                    MsgBox("Changes are now saved", MsgBoxStyle.Information, "New password has been set.")
                    Call ClearAll()
                    Me.Hide()
                Else
                    Exit Sub
                End If
            Catch ex As Exception
                MsgBox("Could not perform this task because " & ex.Message, MsgBoxStyle.Exclamation, "Error")
            End Try
            sqlCmd = Nothing
            sqlCon.Close()

希望上面提到的这些代码能帮助你解决问题。祝您有愉快的一天和愉快的编码:)

您需要使用OleDbCommandBuilder的
.QuotePrefix
.QuoteSuffix
属性将表名和字段名括在方括号中。也就是说,而不仅仅是

Dim cb作为新的OleDb.OleDbCommandBuilder(da)
你需要做什么

Dim cb作为新的OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix=“[”
cb.QuoteSuffix=“]”
这将生成表单的UPDATE语句

UPDATE[TableName]SET[ColumnName]=。。。

如果表名或任何字段名恰好位于Access SQL中,则必须使用该属性。

您需要使用OleDbCommandBuilder的
.QuotePrefix
.QuoteSuffix
属性将表名和字段名括在方括号中。也就是说,而不仅仅是

dim sqlupdate as string="UPDATE [tablename] SET [column_name] = '"& textname.text &"' WHERE [column_name] = '"& textname.text &"';"
Dim cb作为新的OleDb.OleDbCommandBuilder(da)
你需要做什么

Dim cb作为新的OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix=“[”
cb.QuoteSuffix=“]”
这将生成表单的UPDATE语句

UPDATE[TableName]SET[ColumnName]=。。。
如果表名或任何字段名恰好位于Access SQL中,则这是必需的

dim sqlupdate as string="UPDATE [tablename] SET [column_name] = '"& textname.text &"' WHERE [column_name] = '"& textname.text &"';"
通过用方括号括起属性,它似乎起作用了。我试过了,它起作用了

Imports System.Data.OleDb
Imports System.Data
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Database2DataSet.identitas' table. You can move, or remove it, as needed.
        Me.IdentitasTableAdapter.Fill(Me.Database2DataSet.identitas)
    End Sub

    Public Sub clean()
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
    End Sub

    Public Sub read()
        Call openconn()
        str = "select * from identitas"
        dtadapter = New OleDbDataAdapter(str, con)
        Dim dg As New DataTable
        dg.Clear()
        dtadapter.Fill(dg)
        dgv.DataSource = dg
    End Sub

    Public Sub create()
        Call openconn()
        str = "insert into identitas values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "') "
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        MsgBox("data lebet")
        read()
        clean()
    End Sub

    Public Sub update()
        Call openconn()
        str = "UPDATE identitas SET [Nama] = '" & TextBox2.Text & "',[Alamat] = '" & TextBox3.Text & "', [No] = '" & TextBox4.Text & "' where [NIK] = '" & TextBox1.Text & "'"
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        MsgBox("data ter ubah")
        clean()
        read()
    End Sub

    Public Sub delete()
        Call openconn()
        str = "delete from identitas where NIK = '" & TextBox1.Text & "'"
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        clean()
    End Sub

    Private Sub btnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click
        Me.Close()
    End Sub

    Private Sub btnc_Click(ByVal sender As System.Object, ByVal e As     System.EventArgs) Handles btnc.Click
        create()
    End Sub

    Private Sub btnr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnr.Click
        read()
    End Sub

    Private Sub btnclean_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclean.Click
        clean()
    End Sub

    Private Sub btnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnd.Click
        Dim pesan As String = MsgBox("yakin mau hapus = " & TextBox1.Text & "?", MsgBoxStyle.YesNo)
        If pesan = vbYes Then
            delete()
        End If
        read()
    End Sub

    Private Sub btnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnu.Click
        update()
    End Sub

End Class

通过用方括号括起属性,它似乎起作用了我已经尝试过了,它起作用了

是否为表“flow1”定义了主键?是否为表“flow1”定义了主键?可以使用
{}
按钮将代码括在块中。它使它更易于阅读。您可以使用
{}
按钮将代码包含在块中。它使它更具可读性
Imports System.Data.OleDb
Imports System.Data
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Database2DataSet.identitas' table. You can move, or remove it, as needed.
        Me.IdentitasTableAdapter.Fill(Me.Database2DataSet.identitas)
    End Sub

    Public Sub clean()
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
    End Sub

    Public Sub read()
        Call openconn()
        str = "select * from identitas"
        dtadapter = New OleDbDataAdapter(str, con)
        Dim dg As New DataTable
        dg.Clear()
        dtadapter.Fill(dg)
        dgv.DataSource = dg
    End Sub

    Public Sub create()
        Call openconn()
        str = "insert into identitas values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "') "
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        MsgBox("data lebet")
        read()
        clean()
    End Sub

    Public Sub update()
        Call openconn()
        str = "UPDATE identitas SET [Nama] = '" & TextBox2.Text & "',[Alamat] = '" & TextBox3.Text & "', [No] = '" & TextBox4.Text & "' where [NIK] = '" & TextBox1.Text & "'"
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        MsgBox("data ter ubah")
        clean()
        read()
    End Sub

    Public Sub delete()
        Call openconn()
        str = "delete from identitas where NIK = '" & TextBox1.Text & "'"
        cmd = New OleDbCommand(str, con)
        cmd.Connection = con
        cmd.ExecuteNonQuery()
        clean()
    End Sub

    Private Sub btnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click
        Me.Close()
    End Sub

    Private Sub btnc_Click(ByVal sender As System.Object, ByVal e As     System.EventArgs) Handles btnc.Click
        create()
    End Sub

    Private Sub btnr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnr.Click
        read()
    End Sub

    Private Sub btnclean_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclean.Click
        clean()
    End Sub

    Private Sub btnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnd.Click
        Dim pesan As String = MsgBox("yakin mau hapus = " & TextBox1.Text & "?", MsgBoxStyle.YesNo)
        If pesan = vbYes Then
            delete()
        End If
        read()
    End Sub

    Private Sub btnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnu.Click
        update()
    End Sub

End Class