2012-06-28 36 views
3

我有一個dbf文件,我想執行查詢。這是我的代碼(.NET 4.0,C#Windows窗體):插入到dbf文件不接受空值

oconn.ConnectionString = "Provider=vfpoledb.1;Data Source=" + path + ";Collating Sequence=machine"; 
oconn.Open(); 
OleDbCommand ocmd = oconn.CreateCommand(); 
string na = TBNazwaKonta.Text.Replace("\n",""); 
na = na.Replace("\r","") ; 
string ks2 = ks.Replace("\n",""); 
ks2 = ks2.Replace("\r", ""); 
string zapytanie = @"insert into " + path + " (rk, Na,Ks,Ss,So,Wyr,Bw,Bm,Ow,Om,Wm,Mm,Pm,Pw,Ks1,Ks2,Ks3,Ks4,Llx,Wn01,Ma01,L01,Wn02,Ma02,L02,Wn03,Ma03,L03,Wn04,Ma04,L04,Wn05,Ma05,L05,Wn06,Ma06,L06,Wn07,Ma07,L07,Wn08,Ma08,L08,Wn09,Ma09,L09,Wn10,Ma10,L10,Wn11,Ma11,L11,Wn12,Ma12,L12) values (0,'Z-Dz PROD.OPAKOWAŃKIEWICZA 108 38-200 ', '200 02 000212',0,0,'',0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,'','','','',0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0,0.0,0.0,0)"; 
ocmd.CommandText = zapytanie; 
ocmd.ExecuteNonQuery(); 
oconn.Close(); 

連接是好的,插入查詢也沒關係,但我想知道爲什麼這個DBF不接受空值。

我在哪裏可以檢查dbf是否接受空值?當我使用程序讀取dbfs並執行查詢時,dbf接受空值。只有當我使用ado.net時才能接受。 感謝任何幫助解決我的問題

+0

某些列不接受NULL?如果沒有表格定義則不需要答覆。還要添加確切的錯誤消息+堆棧跟蹤。 –

回答

4

您可以創建一個新的命令並在插入之前執行它。

OleDbCommand dbCmdNull = oconn.CreateCommand(); 
dbCmdNull.CommandText = "SET NULL OFF"; 
dbCmdNull.ExecuteNonQuery(); 
+0

謝謝!這正是我想要的。它現在運作良好!謝謝你真的很快回答! – BKl

1

您可以設置您的列不接受空值。

如果您使用的是visual foxpro,請打開您的dbf,轉到視圖>表設計器 您將看到列的列表,最後一列指示它是否接受空值。

那裏有一個按鈕。取消選中,您的列將不會接受空值。

這將確保您不寫入空值。但是,如果存在空值,則將它們寫入某處。你將不得不修復那些代碼。