1 回答

TA貢獻1777條經驗 獲得超3個贊
首先,您的 OleDb 連接源應指向數據所在的路徑,而不僅僅是 .\ 的相對路徑,這可能并不總是一個好的選擇。然后,您對插入、更新、刪除的所有查詢都從該文件夾進行操作,因此您不必明確所有路徑。只是表名。
OleDbConnection oConn = new OleDbConnection(
"Provider=VFPOLEDB.1;SourceType=DBF;Data Source=C:\\rmwin\\;");
現在,你的命令。增、改、刪,用比較普通的sql語句就可以了。但是,不要連接您嘗試插入或更新的值,這會使您暴露于 SQL 注入。相反,OleDb 使用“?” 字符作為添加到命令的參數的占位符,以及所有“?” 需要以相同順序添加的參數。
所以,要獲得選擇,請從現有的開始
System.Data.OleDb.OleDbCommand oCmd = oConn.CreateCommand();
oCmd.CommandText = "select * from PosLink";
對于插入,構建命令,確定您要插入的所有字段...顯然不知道您的表的內容
oCmd.CommandText =
@"insert into PosLink
( TryColumn1,
TryColumn2,
TryColumn3 )
values
( ?,
?,
? ) ";
現在,添加來自屏幕/源的任何地方的參數
oCmd.Parameters.AddWithValue( "parmTryColumn1", yourCSharpClassOrPropertyStringField );
oCmd.Parameters.AddWithValue( "parmTryColumn2", DateTime.Now );
oCmd.Parameters.AddWithValue( "parmTryColumn3", 12345 );
請注意,我在參數命名前加上“parm”前綴只是為了了解它的參數而不是插入的實際列。它們必須與插入的順序相同。
然后你可以執行它......因為它是一個 INSERT,沒有返回任何東西,所以被認為是一個非查詢,但會返回一個有多少條受影響的記錄的計數......如果一切正常,則期望為 1,如果一切正常,則為 0 或負數其他任何事情都失敗了。
var recordCountInserted = oCmd.ExecuteNonQuery();
希望這可以幫助您開始并繼續前進。
至于做追加空白,那將需要一個腳本。在 VFP 中,你會做類似的事情
use SomeTable
append blank
因此,為這些命令構建一個字符串(VfpOleDb 不支持所有命令,但最常見的數據、日期、字符串和常用函數都可以使用)
oCmd.CommandText =
@"execScript('use SomeTable
append blank
use' )";
oCmd.ExecuteNonQuery();
是的,您可以像這樣編寫 VFP 代碼,但并非所有內容都是允許的
我的 VFP、OleDb、參數化查詢等歷史帖子中的許多其他鏈接。這個社區中還有其他強大的 VFP 開發人員。
- 1 回答
- 0 關注
- 172 瀏覽
添加回答
舉報