2013-09-25 2 views
2

나는 바보 같은 짓을하고 있다고 확신하지만이 삽입 쿼리로 문제를 파악하는 것처럼 보일 수 있습니다. SQL Server에 대한 경험이 있지만 유감스럽게도이 프로젝트에서 Access를 사용해야합니다. 이 시점에서 필자는 수동으로 Access에 삽입하고 Visual Studio에 정확한 쿼리를 복사했지만 여전히 구문 오류가 삽입되었습니다. 이 동일한 테스트 프로그램에서 다른 테이블에 삽입 할 수 있지만이 쿼리를 작동시키지 못했습니다.MS Access SQL 삽입 쿼리

내가 같이 설정에 삽입하려고 표 :

queryString = "INSERT INTO daily_prices (time_series_id, open, high, low, close, volume, observation_date) VALUES(13, 3036.75, 3045.72, 3023.27, 3027.52, 4894428992, '2013-09-24')"; 

command = new OleDbCommand(queryString, conn); 
command.ExecuteNonQuery(); 

이 쿼리는 원래 다음과 같은 방법을 공식화했다 :

ID - Int Primary Key 
time_series_id Int 
open decimal 
high decimal 
low decimal 
close decimal 
volume int 
observation_date Date/Time 

내가 시도 수동 쿼리는

queryString = String.Format(@"INSERT INTO daily_prices (time_series_id, open, high, low, close, volume, observation_date) VALUES ({0}, {1} ,{2} ,{3} ,{4} ,{5} ,'{6}')", newId, open, high, low, close, volume, date); 

도움이 될만한 정보가 있으면 여기를 클릭하십시오. 나는 그것이 바보 같은 실수라고 확신하지만, 나는 액세스에서 쿼리를 실행할 수 있기 때문에 약간의 손실이있다. 그리고 같은 쿼리가 C#에서 실패한다.

+0

무엇이 오류입니까? –

+0

삽입 구문 오류.이 때문에 나는 오랫동안 잘못된 장소를 보았습니다. 나는 Access 예약어를 체크했으나 SQL 예약어는 체크하지 않았다. –

답변

1

단어 OPEN 및 CLOSE는 Jet-SQL (Jet 4.0) 용으로 예약 된 키워드입니다. 주위에 대괄호를 사용하십시오 (가능하면 열 이름을 변경하십시오)

queryString = "INSERT INTO daily_prices (time_series_id, [open], high, low, " + 
       "[close], volume, observation_date) VALUES " + 
       "(13, 3036.75, 3045.72, 3023.27, 3027.52, 4894428992, '2013-09-24')"; 
+0

나는 이것을 보내기 전에 예약어를 찾아 보았지만 틀린 목록을보고 있었음에 틀림 없다. 나는 그것이 어리석은 줄 알았다. 스티브 감사합니다. –

+0

이것은 [JET 4.0] (http://support.microsoft.com/kb/321266)의 목록이며 [ACE]에 대해이 단어가 어떻게 예약되어 있는지 알려줍니다. (http://office.microsoft.com/en- us/access-help/access-2007-reserved-words-and-symbols-HA010030643.aspx)를 보려면 아래로 스크롤해야합니다. 나에게 이것은 MS 쪽에서의 나쁜 영향력이다. – Steve