2017-06-02 122 views
0

这是插入到数据库的代码微软访问, 但出现错误。说插入错误 请告诉我为什么它会是这样的。并给我想法如何解决这个问题。插入数据访问数据库失败

感谢从文本

首先收集数据,然后 ,然后将代码选择数据表 ,然后把数据集中 是插入到数据库之后。 我没有看到这个问题

If txtCode.Text = "" Then 
     txtCode.Focus() 
    ElseIf cmbCneeName.Text = "" Then 
     cmbCneeName.Focus() 
    ElseIf txtCneeAddress1.Text = "" Then 
     txtCneeAddress1.Focus() 
    ElseIf txtCneeAddress2.Text = "" Then 
     txtCneeAddress2.Focus() 

    Else 

     Dim acces_da As OleDbDataAdapter 
     Dim cm As OleDbCommand 
     Dim acces_ds As DataSet 
     Dim datarowtblshipper As DataRow 
     Dim cmdbuilder As OleDbCommandBuilder 

     cm = New OleDbCommand 
     With cm 
      .Connection = DBconnection() 
      .CommandText = "select * from TblConsignee where con_code='" & txtCode.Text & "'" 
     End With 


     acces_da = New OleDbDataAdapter 
     acces_ds = New DataSet 
     acces_da.SelectCommand = cm 
     cmdbuilder = New OleDbCommandBuilder(acces_da) 
     acces_da.Fill(acces_ds) 
     Try 
      datarowtblshipper = acces_ds.Tables(0).NewRow 
      datarowtblshipper("Con_Code") = txtCode.Text 
      datarowtblshipper("Con_Comp") = cmbCneeName.Text 
      datarowtblshipper("Con_Add1") = txtCneeAddress1.Text 
      datarowtblshipper("Con_Add2") = txtCneeAddress2.Text 
      datarowtblshipper("Con_Add3") = txtCneeAddress3.Text 
      datarowtblshipper("Con_Add4") = txtCneeAddress4.Text 
      datarowtblshipper("Con_PCode") = txtCneePostCode.Text 
      datarowtblshipper("Con_tel") = txtCneePhoneNo.Text 
      datarowtblshipper("Contents") = txtCneeContents.Text 
      datarowtblshipper("destination") = txtDestination.Text 
      datarowtblshipper("Con_Cont") = txtAttention.Text 
      datarowtblshipper("zone") = tzone.Text 


      acces_ds.Tables(0).Rows.Add(datarowtblshipper) 
      cmdbuilder.GetInsertCommand() 
      acces_da.Update(acces_ds) 
      MsgBox("New Data Inserted!") 

     Catch 
      MsgBox("Error occured : " & vbCrLf & Err.Description, vbExclamation, "error") 
     End Try 
    End If 

This is the error they said..

回答

1

我经常使用的Access数据库。不幸的是我不熟悉你使用的方法,因为我对VB.NET还比较陌生。

试试这个方法,很容易让错误的轨迹:

Using con As New OleDbConnection 

    con.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; " & _ 
          "Data Source = " '''Your path here 
    Dim sql_insert As String = "INSERT INTO TblConsignee (Con_Code, Con_Comp, Con_Add1, " & _ 
           "Con_Add2, Con_Add3, Con_Add4, Con_PCode, Con_tel, " & _ 
           "Contents, destination, Con_Cont, zone) " & _ 
           "VALUES " & _ 
           "(@code, @comp, @add1, @add2, @add3, @add4, @pcode, " & _ 
           "@tel, @content, @dest, @zone);" 

    Dim sql_insert_entry As New OleDbCommand 

    con.Open() 

    With sql_insert_entry 
      .Parameters.AddWithValue("@code", txtCode.Text) 
      .Parameters.AddWithValue("@comp", cmbCneeName.Text) 
      .Parameters.AddWithValue("@add1", txtCneeAddress1.Text) 
      .Parameters.AddWithValue("@add2", txtCneeAddress2.Text) 
      .Parameters.AddWithValue("@add3", txtCneeAddress3.Text) 
      .Parameters.AddWithValue("@add4", txtCneeAddress4.Text) 
      .Parameters.AddWithValue("@pcode", txtCneePostCode.Text) 
      .Parameters.AddWithValue("@tel", txtCneePhoneNo.Text) 
      .Parameters.AddWithValue("@content", txtCneeContents.Text) 
      .Parameters.AddWithValue("@dest", txtDestination.Text) 
      .Parameters.AddWithValue("@cont", txtAttention.Text) 
      .Parameters.AddWithValue("@zone", tzone.Text) 
      .CommandText = sql_insert 
      .Connection = con 
      .ExecuteNonQuery() 
    End With 

    con.Close() 

End Using 

如果要更新的记录,只是改变命令字符串来更新你的数据库所需的字段。

+0

我喜欢你的代码..,可以使用..,实际上我尝试填充所有数据到数据集,然后使用数据集来更新数据库.. 使用functiong GetInsertCommand(),他们有GetUpdateCommand,甚至GetDeleteCommand时。 –

+0

我一直在改变我的方法,你的方法.. –

+0

我很高兴它帮助。 –