最近工作會在Visual Studio 2013的VC中用到SQL語法與SQL SERVER 2008 R2資料庫做資料表的溝通與新增刪除修改,

遇到了當我想要用INSERT INTO一筆資料到資料表中卻不允許我新增的狀況,

一開始以為可以在原本語法指令前一同加上SET IDENTITY_INSERT HDCP_KEY ON 的方式解決,沒想到問題並不是這樣,

經過一天嘗試,突然想通,發現原來是因為資料表上的主鍵資料欄位Serial_No是屬於SQL系統自己累加的資料,

並不允許使用INSERT INTO去新增資料時加上這個Serial_No欄位,所以改了一下,

原本SQL語法是

sqlstr.Format("INSERT INTO HDCP_KEY (Serial_No,Box_SN,MB_SN,KeySet_No,Remark) VALUES ('','','%s','%s','')",mbsn,keyNo);

後來拿掉Serial_No改為,
sqlstr.Format("INSERT INTO HDCP_KEY (Box_SN,MB_SN,KeySet_No,Remark) VALUES ('','%s','%s','')",mbsn,keyNo);

這樣就可以解決了

順帶一提,VALUES之內的資料型態必須符合原本資料庫欄位的型態,否則也是一樣有問題無法新增,

之前可能是因為資料庫是Winxp x32+ SQL2005所以一樣的指令卻不會有這個問題

最近MIS協助把系統更新到Win7 x64 +SQL 2008 R2才遇到這樣的差別,

算是學到了一課......

 

 

 

arrow
arrow

    Neil 發表在 痞客邦 留言(0) 人氣()