2013-12-13 7 views
1

VB.NET에서 Access (* .mdb) 데이터베이스의 테이블에있는 모든 데이터를 삭제하려고 시도했지만 다음 데이터를 다시 삽입 할 때 "INSERT INTO 문에서 구문 오류"라는 오류가 발생합니다. 코드 :테이블의 모든 데이터를 삭제하고 VB.NET을 사용하여 Access 데이터베이스에 새 레코드를 삽입하는 방법은 무엇입니까?

Imports System 
Imports System.Data 
Imports System.Data.SqlClient 

... 

    'test.mdb file 
    'with a table "MyTable" 
    'with two fields: 
    '"name" (Memo), "value" (Memo) 

    Dim con As New OleDb.OleDbConnection 
    Dim dbProvider As String 
    Dim dbSource As String 
    Dim ds As New DataSet 
    Dim da As OleDb.OleDbDataAdapter 
    Dim sql As String 
    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" 
    dbSource = "Data Source = C:\Users\Max\Desktop\test.mdb" 
    con.ConnectionString = dbProvider & dbSource 
    con.Open() 
    sql = "SELECT * FROM MyTable" 

    'select data from database, fill and clear dataset to get the table schema 
    da = New OleDb.OleDbDataAdapter(sql, con) 
    da.Fill(ds, "MyTable") 
    ds.Clear() 

    'add a new row in the dataset 
    Dim dsNewRow As DataRow = ds.Tables("MyTable").NewRow() 
    dsNewRow.Item("name") = "TESTNAME" 
    dsNewRow.Item("value") = "TESTVALUE" 
    ds.Tables("MyTable").Rows.Add(dsNewRow) 

    'update the database 
    Dim objCommandBuilder As New OleDb.OleDbCommandBuilder(da) 
    da.Update(ds, "MyTable") 
    ds.Dispose() 
    da.Dispose() 
    con.Close() 
    con.Dispose() 
+1

"name"을 "fld1"및 "value"를 "fld2"로 변경하고 VB.Net 코드를 수정하여 새 필드 이름을 사용하는 경우에도 오류가 발생합니까? 아니면 다른 오류일까요? – HansUp

+0

필드 이름을 변경하면 작동하는 코드가 표시되지만 이유는 모르겠습니다 !!!! – Max

+0

'Name'과'Value'는 둘 다 [예약어] (http://allenbrowne.com/AppIssueBadWord.html)이기 때문에 Access db 객체 이름에는 적합하지 않습니다. – HansUp

답변

1
  1. 는 액세스 DB 파일의 백업 복사본을 만듭니다.
  2. 을 MyTable에서 두 필드의 이름을 바꿉니다 이름FLD1에; 및 ~ fld2
  3. 해당 이름을 사용하도록 VB.Net 코드를 수정하십시오.

귀하는 이러한 단계가 오류를 제거했다는 것을 나타내 었습니다.

namevalue은 모두 reserved words입니다. 일부 상황에서는 Access db 엔진이 예약어를 필드 이름으로 사용할 수 있습니다. 그러나 OleDb가 관련되어있을 때는 용서가 덜한 것처럼 보입니다.

이상적으로 Access db 개체 이름의 예약어는 사용하지 않는 것이 좋습니다. 링크 된 페이지에는 무료 유틸리티 (DbIssueChecker.zip)에 대한 링크가 포함되어있어 Access db 파일에서 문제 이름 및 기타 문제를 검사 할 수 있습니다.