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

如何在C#中修改FoxPro备忘录?,c#,foxpro,C#,Foxpro,我有一个很大的字符串要更新到FoxPro表的memo字段,我试过了 cmd = db.GetSqlStringCommandWrapper("UPDATE xxx SET memo1 = "adfsd" WHERE condition1 = 'satisfied'"); db.ExecuteNonQuery(cmd); 此查询覆盖备忘录1中以前的值 我不能在C#中使用MODIFY memo 如何使用C#?将字符串附加到Foxpro中已存在的备注字段中,请尝试使命令显示: UPDATE xx

我有一个很大的字符串要更新到FoxPro表的memo字段,我试过了

 cmd = db.GetSqlStringCommandWrapper("UPDATE xxx SET memo1 = "adfsd" WHERE condition1 = 'satisfied'");
 db.ExecuteNonQuery(cmd);
此查询覆盖备忘录1中以前的值

我不能在C#中使用
MODIFY memo


如何使用C#?

将字符串附加到Foxpro中已存在的备注字段中,请尝试使命令显示:

UPDATE xxx SET memo1 = memo1 + "adfsd"

我认为问题可能在于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();
}

您需要参数化查询。。假设查询包装器获得数据库的sql连接句柄。VFP OleDB提供程序使用“?”作为参数的“占位符”,并且必须匹配与查询关联的顺序

我有更详细的样品

试试像这样的东西

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);

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

您不能仅将字符串附加到备注字段。只有通过使用INSERT子句来追加整行的机会,但情况并非如此。有多种方法可以附加到备注字段。更新mytable set mymemo=alltrim(mymemo)+“更多内容”。。或者从myfile.txt中附加备注mymemo。。。例如,由于他的示例中没有任何用户提供的信息,是否需要参数?@AlanB,我建议使用它,因为示例只是。。。样品此人可能从另一个来源获取信息,并拥有一个参数化函数来使用为此类消息和/或密钥传递的值进行更新比他的示例中的硬编码要好。哦,绝对-一般不使用参数是一个非常糟糕的主意。你是对的@DRapp我正在使用参数化函数在我的实际程序中进行更新。你确定字段实际上是一个备注字段,而不仅仅是字符字段吗?是的,我确定它是一个备注字段。我试过这个,但并没有像预期的那样工作,这意味着它有时会显示字符串太长的错误。我要更新的完整字符串长度是
132370292
。Hmmm在这种情况下,我想知道您是否达到了VFP系统限制:虽然备忘录文件可以是2GB,但字符串的最大大小是16777184Nope,字符串的大小是256 MB(字符长度*2字节)。我使用C#StringBuilder创建字符串,并使用.ToString方法通过参数传递字符串。把这个问题提出来[