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 关注
- 198 浏览
添加回答
举报