【问题标题】:How to read from database and write into text file with C#?如何使用 C# 从数据库中读取并写入文本文件?
【发布时间】:2009-09-01 08:47:17
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为您需要阅读一些教程并自己尝试一下,然后再提出问题......您要问的是非常基本的东西
  • 也许您可以发布您目前所拥有的,然后我们可以帮助您完成剩下的工作,现在这个问题有点含糊。

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


【解决方案1】:

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

Reading a database

Text file operations

【讨论】:

    【解决方案2】:

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

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

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

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

    像这样在文件中写一行:

    writer.WriteLine(theLineOfTextFromYourDatabase);
    

    完成后,记得关闭文件:

    writer.Close();
    

    【讨论】:

      【解决方案3】:

      基于 awe 的回复,我尝试更改与 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();
            }
        }

      【讨论】:

        【解决方案4】:

        这是一个非常简单的例程,它使用 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");
        

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

        【讨论】:

        • 亲爱的 mcauthorn 和 Mr.Smith..我知道任何关于 xml 的内容,但我仍处于学习阶段。我不认为我能在短时间内消化。我认为 xml 对我来说太先进了。那么可以给我另一种解决方法吗?咳咳!我使用的是 MYSQL server 2005 谢谢
        【解决方案5】:

        感谢您的回复..

        这里有一些关于将表中的记录写入文本文件的部分。我设法提出了解决方案,但仅适用于 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:我不知道我应该在这里讨论还是打开新帖子?

        【讨论】:

        • 是的,你应该打开一个新帖子,这样有人回答它就可以得到荣誉......你也可以链接到这个帖子以供参考。
        • ...或者只是一个快速的答案(没有尝试过):我认为只需将 connString 更改为 sql server 的有效连接字符串,它就不会起作用。
        【解决方案6】:

        您可以通过两种方式写出数据。第一种是使用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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多