如何从数据库读取并使用C#写入文本文件?

时间:2009-09-01 08:47:18

标签: c# .net mysql file-io filesystems

如何从数据库中读取并写入文本文件?

我想将数据库中的记录写入/复制(不确定要调用什么)到文本文件中。数据库中的一行记录等于文本文件中的一行。我在数据库中没有问题。

为了创建文本文件,它会提到FileStreamStreamWriter。我应该使用哪一个?

6 个答案:

答案 0 :(得分:3)

您正试图通过此问题解决一些基本问题。首先尝试通过一些谷歌搜索熟悉自己。对于这个主题,有数百万资源可用。但是,我正在为包含代码段的问题添加一些链接。

Reading a database

Text file operations

答案 1 :(得分:1)

这是一个非常简单的例程,使用DataSet类将从数据库中检索到的数据写入XML文件:

DataSet dsMyData = FunctionToGetDataSet("My SQL string");

if(dsMyData.Tables.Count > 0)
{
    dsMyData.WriteXml("C:\Path\To\Your\Data\File.xml");
}

您可以读取存储在XML文件中的数据,如下所示:

dsMyData.ReadXml("C:\Path\To\Your\Data\File.xml");

还有其他方法,但这是短暂而甜蜜的,可能会指向正确的方向。祝你好运!

答案 2 :(得分:1)

如果要创建新文件或覆盖/替换现有文件,可以使用:

System.IO.StreamWriter writer = System.IO.File.CreateText(filename);

如果要附加到现有文件,请使用:

System.IO.StreamWriter writer = System.IO.File.AppendText(filename);

在文件中写一行:

writer.WriteLine(theLineOfTextFromYourDatabase);

完成后,请记得关闭文件:

writer.Close();

答案 3 :(得分:1)

您可以通过两种方式编写数据。第一种方法是使用Dataset.WriteXMl将整个数据集写入磁盘。如果您只是寻找文字而没有标签,那么StreamWriter是最好的前进方式。你会做这样的事情:

outputFS= new FileStream(filepath, FileMode.Create);
outputwriter = new StreamWriter(outputFS);
string totalString = "";

DataRow row = dt.Rows[dt.Rows.Count - 1];    
foreach (DataColumn col in row.Table.Columns)
{
    //Append each item to the string.
}

outputwriter .WriteLine(totalString);

答案 4 :(得分:1)

感谢回复..

以下是将表中的记录写入文本文件的一些部分。我设法提出了解决方案,但仅限于Access数据库。现在,问题是,我想使用Microsoft SQL Server 2005数据库。如何将其更改为SQL兼容?


          //create connection
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Status.mdb"; OleDbConnection conn = new OleDbConnection(connString); //command OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = "tblOutbox"; cmd.CommandType = CommandType.TableDirect;
conn.Open(); //write into text file StreamWriter tw = File.AppendText("c:\INMS.txt"); OleDbDataReader reader = cmd.ExecuteReader(); tw.WriteLine("id, ip_add, message, datetime"); while (reader.Read()) { tw.Write(reader["id"].ToString()); tw.Write(", " + reader["ip_add"].ToString()); tw.Write(", " + reader["message"].ToString()); tw.WriteLine(", " + reader["datetime"].ToString()); } tw.WriteLine(DateTime.Now); tw.WriteLine("---------------------------------"); tw.Close();
reader.Close(); conn.Close();

PS:我不确定我是否应该在这里讨论它或者打开新帖子?

答案 5 :(得分:1)

根据敬畏的响应,我尝试更改与SQL Server的连接,并将所有OleDB更改为SQL。这就是我做的。亲爱的,谢谢你的帮助!!

using (StreamWriter tw = File.AppendText("c:\INMS.txt"))
  {
      using (SqlDataReader reader = cmd.ExecuteReader())
      {
          tw.WriteLine("id, ip address, message, datetime");
          while (reader.Read())
          {
              tw.Write(reader["id"].ToString());
              tw.Write(", " + reader["ip"].ToString());
              tw.Write(", " + reader["msg"].ToString());
              tw.WriteLine(", " + reader["date"].ToString());
          }
          tw.WriteLine("Report Generate at : " + DateTime.Now);
          tw.WriteLine("---------------------------------");
          tw.Close();
          reader.Close();
      }
  }