2013-05-24 4 views
1

Access 데이터베이스에 데이터를 쓸 수있는 프로그램을 작성하려고하지만 "INSERT INTO 문에서 구문 오류"라는 오류가 계속 발생합니다.INSERT INTO 문에서 구문 오류가 발생했습니다. Access에 쓸 때

FirstLast은 테이블의 이름입니다. FirstLast은 그 안에 열입니다. 당신은 자동으로 자신 뒤처리 있도록 또한, 연결 및 명령에 대한 Using 문을 사용한다

INSERT INTO FirstLast (First, Last) VALUES (@First, @Last) 

참고 :

Imports System.Data.OleDb 

Public Class Form1 
    Dim theConnectionString As New OleDbConnection 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     theConnectionString.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\Database1.accdb" 

     Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO FirstLast (First, Last) VALUES (@First, TextBox1.text)", theConnectionString) 

     cmd.Parameters.Add("@First", OleDbType.Char, 255).Value = TextBox1.Text 
     cmd.Parameters.Add("@Last", OleDbType.Char, 255).Value = TextBox1.Text 

     Try 
      theConnectionString.Open() 
      cmd.ExecuteNonQuery() 
     Catch ex As Exception 
      Throw ex 
     Finally 
      theConnectionString.Close() 
     End Try 

    End Sub 
End Class 
+1

당신은'@ First'와'@ Last' 매개 변수의 이름을 지정하고 있습니다. 그래서'? '대신에 그것들을 사용하지 않아야합니까? – Ryan

+1

@mwilson : 아니요, 매개 변수 * 이름을 바꿔야합니다. 그것들은 당신의 컬럼 이름과 같을 필요는 없습니다. –

+0

필자는 Access 전문가는 아니지만, SQL에 'VALUES (@First, TextBox1.text)'가 있다는 단순한 실제 문제가 아닙니다. * VALUES (@First, @ 마지막)'? 그렇다면이 질문을 "단순히 오타"로 끝내기로했습니다. –

답변

5

내가 방금 대신 위치 사람의 명명 된 매개 변수를 사용할 필요가 의심 명시적인 Finally 블록을 필요로하지 않습니다. (당신은 제거 할 수 전체 Try/Catch/Finally 그냥 어쨌든 예외를 rethrowing하고 주어진.)

아래의 코멘트에서 언급 한 바와 같이, 당신은 또한 아마 오히려보다는 @Last 매개 변수에 TextBox2.Text를 사용하는 의미 TextBox1.Text을 다시 사용하십시오.

+1

또한 @Last 값이 잘못되었습니다. TextBox2.Text –

+0

@RichardSchneider : 그래, 그것을 편집 할 것입니다. –

+0

이것을 위해 특별한 수입이 필요합니까? 나는 아직도 그것을 작동시키지 못한다 ... 나는 Try Catch를 아직 따르지 않았다. 나는 아직도 그 부분을 배우고있다. 이는 그대로 또는 문제를 유발하는 것입니까? – mwilson

관련 문제