2015-06-26 64 views
-2

我有大型數據表,我正在使用插入命令將數據放入一個mdb訪問表。我正在循環訪問數據表中的列數組,以生成insert命令的名稱和值。它一直說我有一個語法錯誤,我不知道爲什麼,因爲語法很好。我的插入命令從C#失敗

INSERT INTO tbl01_General (PIN, PROJ_CAT, MFT, MAJFUND, OTHFUND, WORKTYPE, WORK_LABEL, FUND_DATE, ORIG_DATE, LET_DATE, MUNIC, DISTRICT, ROUTE, FROM, TO, MP1, MP2, MILES, FAS, DESCRIPTN, RESPAGENCY, CURR_PHASE, DEPARTMENT, PROJMGR, STATUS, CONT_COST, COSTBASIS, COSTDATE, BASECOST, BASEDATE, PROJ_COST, FED_FLAG, TAG_FLAG, REV_FLAG, COM_FLAG, TIP_FLAG, CON_FLAG, CON_S, CON_P, CON_D, CON_R, CON_C, CON_I, CON_O, DEPT_S, DEPT_P, DEPT_D, DEPT_R, DEPT_C, DEPT_I, DEPT_M, DEPT_L, PGM_DATE, PGM6Y_DATE, LASTUPDATE, NEEDS_TIP_INFO, SEQ_NUMBER, SELECTED, MFT_Closed_Section, SSMA_TimeStamp) 
VALUES ('B-00099', 'P', '08-00118-09-BR', 'Null', 'Null', 'Drainage', '2', '01/01/2013', '01/01/2013', '04/16/2013', 'North Barrington', 'CB-17', 'Miller Rd', '@ 0.3 mi east of', 'IL Rte 59', '0', '0', '0.3', 'Null', 'Construct 3-span Bridge and Embanked Road\r\nin order to alleviate road flooding\r\n\r\n\r\n', 'LCDOT', 'Null', 'Design', 'Construction', '', '150.0000', 'Per Al Giertych', '02/17/2011', '2600.0000', '02/17/2011', '3735.3000', 'False', 'False', 'False', 'True', 'False', 'False', 'False', 'False', 'False', 'False', 'False', 'False', 'False', 'Null', 'Null', 'Null', 'Null', 'Null', 'Null', 'Null', 'Null', '01/11/2001', '05/11/2001', '02/14/2014', 'False', 'Null', 'False', 'False', 'System.Byte[]')" 

用INSERT命令

語法錯誤不幸的是,這也沒有工作:@大衛

INSERT INTO [tbl01_General] (PIN, PROJ_CAT, MFT, MAJFUND, OTHFUND, WORKTYPE, WORK_LABEL, FUND_DATE, ORIG_DATE, LET_DATE, MUNIC, DISTRICT, ROUTE, FROM, TO, MP1, MP2, MILES, FAS, DESCRIPTN, RESPAGENCY, CURR_PHASE, DEPARTMENT, PROJMGR, STATUS, CONT_COST, COSTBASIS, COSTDATE, BASECOST, BASEDATE, PROJ_COST, FED_FLAG, TAG_FLAG, REV_FLAG, COM_FLAG, TIP_FLAG, CON_FLAG, CON_S, CON_P, CON_D, CON_R, CON_C, CON_I, CON_O, DEPT_S, DEPT_P, DEPT_D, DEPT_R, DEPT_C, DEPT_I, DEPT_M, DEPT_L, PGM_DATE, PGM6Y_DATE, LASTUPDATE, NEEDS_TIP_INFO, SEQ_NUMBER, SELECTED, MFT_Closed_Section, SSMA_TimeStamp) 
VALUES ([B-00099], [P], [08-00118-09-BR], [Null], [Null], [Drainage], [2], [01/01/2013], [01/01/2013], [04/16/2013], [North Barrington], [CB-17], [Miller Rd], [@ 0.3 mi east of], [IL Rte 59], [0], [0], [0.3], [Null], [Construct 3-span Bridge and Embanked Road\r\nin order to alleviate road flooding\r\n\r\n\r\n], [LCDOT], [Null], [Design], [Construction], [], [150.0000], [Per Al Giertych], [02/17/2011], [2600.0000], [02/17/2011], [3735.3000], [False], [False], [False], [True], [False], [False], [False], [False], [False], [False], [False], [False], [False], [Null], [Null], [Null], [Null], [Null], [Null], [Null], [Null], [01/11/2001], [05/11/2001], [02/14/2014], [False], [Null], [False], [False], [System.Byte[]]) 
+0

你應該包括你的錯誤文本。 – Derek

+0

你會得到什麼特定的語法錯誤? – rageit

+0

我的插入命令出現語法錯誤 –

回答

0

至少你的名字列的一個是reserved word。在這種情況下,至少要列FROM。這使查詢解析器混淆不清。

爲了指定要這個名字指的是一個對象和不使用FROM關鍵字,請將對象名稱在方括號:

INSERT INTO [tbl01_General] ([PIN], [PROJ_CAT], [MFT] ... 

在技術上不需要封閉全部都是,只是會混淆解析器。但是你說你正在動態構建列名,以便代碼可能包含所有這些列名。

+0

我只是試過了,它沒有工作。我張貼在原來的東西你有我做的。 –

+1

@JillShapiroErichsen:那...根本不是我所說的。不包括列名,但是你包含了這些值,這與你應該做的事情相反:) – David

+0

真的,它工作得更好。謝謝,但它說由於類型轉換它未能插入......我想你不能插入所有東西作爲strings..including null –

0

繼包圍你的很多字段名,你還需要的日期表達的正確格式和小數不能被引用:

..., 'Per Al Giertych', #02/17/2011#, 2600.0000, ...