如何在C#中修改FoxPro备忘录?

时间:2014-08-04 13:11:03

标签: c# foxpro

我有一个非常大的字符串要更新到FoxPro Table的备注字段,我试过

 cmd = db.GetSqlStringCommandWrapper("UPDATE xxx SET memo1 = "adfsd" WHERE condition1 = 'satisfied'");
 db.ExecuteNonQuery(cmd);

此查询将覆盖memo1中的先前值。

我无法在C#中使用MODIFY memo

如何使用C#将字符串附加到Foxpro中已存在的备注字段?

3 个答案:

答案 0 :(得分:0)

尝试发出命令说:

UPDATE xxx SET memo1 = memo1 + "adfsd"

答案 1 :(得分:0)

我认为问题可能出在GetSqlStringCommandWrapper上,据我所知,这个问题已被弃用。

这不应该是一个问题,例如使用OLEDB提供程序:

var DBC = @"C:\mydata.dbc";
string ConnectionString = string.Format("Provider=VFPOLEDB.1;Data Source={0};Exclusive=false;Ansi=true;OLE DB Services = 0", DBC);
using (OleDbConnection testConnection = new OleDbConnection(ConnectionString))
{
    OleDbCommand updateCommand = new OleDbCommand(@"update mytable set mymemo=alltrim(mymemo)+ttoc(datetime()) where thisfield='THISVALUE'", testConnection);
    testConnection.Open();
    updateCommand.ExecuteNonQuery();
    Console.WriteLine(@"Finished - press ENTER.");
    Console.ReadLine();
}

答案 2 :(得分:0)

您需要参数化您的查询。假设您的查询包装器获取数据库的sql连接句柄。 VFP OleDB Provider使用“?”作为参数的“占位符”,必须与查询相关联的订单匹配。

我有一个更详细的样本to a very similar question here...

尝试类似

的内容
string whatToSetItTo = "this is a test string that can even include 'quotes'";

cmd = db.GetSqlStringCommandWrapper("UPDATE YourTable SET memo1 = ? WHERE someKeyColumn = ?");
cmd.Parameters.Add( "parmForMemoField", whatToSetItTo);
cmd.Parameters.Add( "parmForKeyColumn", "satisfied" );


db.ExecuteNonQuery(cmd);

注意以相同顺序添加的参数。无论字符串值是什么(或者甚至可以是与表结构相对应的整数,日期等,但您的样本仅基于字符串),占位符按顺序填充。值会相应更新。