2012-02-13 4 views
0

OleDb.OleDbDataAdaptor 개체를 만들어 DataTable 개체를 채 웁니다. OleDbDataAdaptor의 건설, 나는 다음과 같이 초기화 :MDB 테이블 열이 유니 코드로 실패 했습니까?

SQL은
Dim adapter As New OleDb.OleDbDataAdapter(sql, myConnection) 

이 같은 내 쿼리 문자열 :

Dim sql = "SELECT * FROM DBTable TC WHERE TC.Text=N'Criteria'" 

나는 앞의 자본 N을 사용하고 있기 때문에 필드 "텍스트"에서 테이블 "DBTable"은 유니 코드에 있어야합니다. 그리고 myConnection은 DBTable이 정의 된 mdb 파일 중 하나에 대한 연결을 나타냅니다.

그러나 adaptor.Fill (myDataTable)을 실행하면 실패하고 예외가 throw됩니다. 쿼리 식 'TC.Text = N'Criteria'에서 구문 오류 (누락 된 연산자)가 발생합니다. 아무도 여기서 무슨 일이 있었는지 압니까? 유니 코드 텍스트를 진행하려면 N이 필요하다는 것을 알게되었습니다. 또 다른 질문은 어떻게 mdb 파일의 필드가 실제로 유니 코드인지 확인하는 것입니다. Data Type 필드가 "Text"이고 Access 2003을 사용하고 있음을 알 수 있으므로 유니 코드로만 간주 할 수 있습니다. 사실 나는 현장에서 유니 코드 압축을 가능하게하고 있습니다. "Criteria"텍스트에서 볼 수 있듯이 어쨌든 특수 문자가 없습니다.

도움 주셔서 감사합니다.

+0

@Remou 감사하지만 C#은 내가 사용하지 않습니다. 나는 VB.NET을 사용하고 있는데, Dim이 나오는 곳입니다. 그리고이 코드 부분은 .mdb DB에 연결을 시도하는 것을 제외하고는 MS Access 응용 프로그램에서 가져온 것이 아닙니다. 하지만 SQL Server와는 달리 mdb 유니 코드 텍스트에 액세스하기 위해 대문자 N을 사용할 필요가 없다는 느낌을 받았습니까? 유사한 코드가 SQL Server DB와 잘 작동하지만 Access 데이터베이스에서만 작동하므로 사실 – tete

+0

참조 http://stackoverflow.com/questions/6040671/using-n-in-select-query-gives-syntax-error – Fionnuala

+0

@ 감사 감사! 나는 접근이 문자열 앞에서 대문자 N을 넣으면 안된다고 생각한다. 그렇지 않으면 언급 된 오류를 줄 것이다. 우리 프로그램은 Access DB와 SQL Server DB에 대해 동일한 루틴을 사용했기 때문에 SQL Server에서 작동하는 루틴은 Access DB와 관련이 없습니다. – tete

답변

0

@Remou 응답에 따르면 Access 데이터베이스의 경우 대문자 N은 유니 코드 텍스트에 필요하지 않습니다. N은 SQL Server DB에만 필요합니다.