正在从legay应用程序创建XML文件



我有一个用Access VBA编写的旧应用程序,现在是升级代码的时候了,公司决定使用C#,因为我们使用它最多。我的问题是,我在VBA中有这段代码,它工作得很好,

Set RS2 = Db.OpenRecordset("Select * FROM TTable WHERE ID="&Forms![test]![SifraFirme]&")
su = RS2.RecordCount
RS2.MoveFirst
Do While Not RS2.EOF
//lines of code
RS3.MoveNext
Loop
RS3.Close

现在我的问题是,是否有类似于Do While Not RS.EOF的C#命令,任何文献或示例都将不胜感激。只是朝着正确的方向轻轻一推,因为它已经变得令人沮丧了。上面代码的要点是,一旦他完成了第一个,转到第二个,然后。。。

谢谢你,

回答:

上面代码的要点是遍历表并过滤数据并将其写入XML

您可以使用System.Data命名空间中的OleDbDataAdapter将数据库表读取到某个DataSet。然后很容易地使用填充的DataSet或通过GetXml方法立即获得其XML表示:

static void Main(string[] args)
{
// Note about set Prefer 32-bit app version of your C# app to use Jet.OLEDB provider
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourDBPath";
var query = "Select * FROM TTable";
// Introducing our DataSet
var dataSet = new System.Data.DataSet();
using (var connection = new System.Data.OleDb.OleDbConnection(connectionString))
{
var command = new System.Data.OleDb.OleDbCommand(query, connection);
try
{
connection.Open();

using (var dataAdapter = new System.Data.OleDb.OleDbDataAdapter(command))
{
// Fill DataSet
dataAdapter.Fill(dataSet);
}
// Get XML representation of DataSet and save to XML file
System.IO.File.WriteAllText(@"TTable.xml", dataSet.GetXml());
// Or if need to filter data before save - read through DataSet
var TTable = dataSet.Tables["TTable"];
foreach (var row in TTable.Rows.Cast<System.Data.DataRow>().ToArray()) // using System.Linq needed
{

}
}
catch (System.Exception ex)
{
// Handle exception in some way
System.Console.WriteLine(ex.Message);
}  
}

System.Console.ReadKey();
}

C#有XMLWriter类,您可以使用SQL类查询和读取信息。

C#中的while循环如下所示:

while (!RS2.EOF)
{
//lines of code
RS2.MoveNext();
}

!是逻辑否定运算符。

ADO.NET有一个DataSet类,它以类似于VBA中的RecordSet的方式处理数据。

请参阅Microsoft关于DataSet 的文档

最新更新