如何从数据库中读取并写入文本文件?
我想将数据库中的记录写入/复制(不确定要调用什么)到文本文件中。数据库中的一行记录等于文本文件中的一行。我在数据库中没有问题。
为了创建文本文件,它会提到FileStream
和StreamWriter
。我应该使用哪一个?
答案 0 :(得分:3)
您正试图通过此问题解决一些基本问题。首先尝试通过一些谷歌搜索熟悉自己。对于这个主题,有数百万资源可用。但是,我正在为包含代码段的问题添加一些链接。
答案 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();
}
}