.net 编写文本文件

.net 编写文本文件,.net,vb.net,.net,Vb.net,我正在使用VB.NET和,我想从数据库中编写一个文本文件 打开一个文本文件,从数据库中读取数据,然后写入文本文件 代码 上面的代码显示错误,如何编写文本文件 VB.NET代码帮助文件。ReadAllText如果用于从文件中读取 File.WriteAllText会将所有内容写入文件,覆盖其中的内容 您需要获得如下数据: data = dr.Item("PersonID").ToString() 写作时,您可能希望: 更有效的方法是循环数据,在内存中构建整个数据集(在每行末尾添加换行符),然后使

我正在使用VB.NET和,我想从数据库中编写一个文本文件

打开一个文本文件,从数据库中读取数据,然后写入文本文件

代码

上面的代码显示错误,如何编写文本文件


VB.NET代码帮助

文件。ReadAllText如果用于从文件中读取

File.WriteAllText
会将所有内容写入文件,覆盖其中的内容

您需要获得如下数据:

data = dr.Item("PersonID").ToString()
写作时,您可能希望:

更有效的方法是循环数据,在内存中构建整个数据集(在每行末尾添加换行符),然后使用
File.writealText
一次性写入所有数据。我假设数据量不是很大,因为这种方法将使用更多内存,但会导致更少的磁盘IO

cmd = New SqlCommand("SELECT ID, Name, Dept from table", con)
dr = cmd.ExecuteReader

Dim sb as new StringBuilder

While dr.Read()

    ''Let's read line by line and Append it to our StringBuilder
    sb.AppendLine(
           String.Format("{0} | {1} | {2} | {3}", 
                   dr.item("ID"), dr.item("Name"), dr.item("Dept") ))

End While

''Now that we have all data in our StringBuilder, lets put into our file

File.WriteAllLines("D:\test.txt", sb.ToString())
p.S。从一个C#家伙那里。。。请验证代码是否正确:)(下面是C代码)


在您的代码中,您实际上并没有从数据库中读取数据。试试这个:

Using writer = New StreamWriter("d:\test.txt")
    While dr.Read()
        Dim id = dr.GetInt32(0)
        Dim name = dr.GetString(1)
        Dim dept = dr.GetString(2)

        writer.WriteLine(String.Format("{0} {1} {2}", id, name, dept))
    End While
End Using

那么,错误是什么?@Sosh ReadAllText采用的是路径,而不是数据!它读取一个文件路径。。。即使PersonID类似于C:\myfile.txt,位于D:的文件也将只包含上次读取的文件,因为WriteAllText会覆盖它(始终创建一个新文件)!“难道你看不出这里有这么多的时间吗?”巴莱桑德尔-我不是那个要求答案的人。我也不确定我是否理解你关于时间的观点。我的观点是,如果您发布了一个关于包含错误的问题的问题,您当然也应该发布错误。如果您使用时间跨度来查看StreamWrite使用的时间,File.writeAllines比StreamWriter快得多!我有20行代码读取一个文件,获取其内容大小,然后以中的大小再次写入该文件,使用StreamRead和StreamWriter大约需要28毫秒,而file.ReadAllLines和file.WriteAllLines现在需要3毫秒@如果SQL查询返回数百万条记录,该怎么办?你要把它们全部载入内存吗?在我的例子中,我正在处理1800行文本,我给你的时间就是为了这个。关于“100万”,我可能需要进行计算,但在Windows环境中,是的,我会使用内存!
cmd = New SqlCommand("SELECT ID, Name, Dept from table", con)
dr = cmd.ExecuteReader

Dim sb as new StringBuilder

While dr.Read()

    ''Let's read line by line and Append it to our StringBuilder
    sb.AppendLine(
           String.Format("{0} | {1} | {2} | {3}", 
                   dr.item("ID"), dr.item("Name"), dr.item("Dept") ))

End While

''Now that we have all data in our StringBuilder, lets put into our file

File.WriteAllLines("D:\test.txt", sb.ToString())
using (SqlConnection con = new SqlConnection("my Connection String"))
{
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = con;
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.CommandText = "SELECT ID, Name, Dept from table";

        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        StringBuilder sb = new StringBuilder();

        while (dr.Read())
            // Let's read line by line and Append it to our StringBuilder
            sb.AppendLine(
                String.Format("{0} | {1} | {2} | {3}",
                    dr["ID"], dr["Name"], dr["Dept"]));

        // Now that we have all data in our StringBuilder, lets put into our file
        File.WriteAllLines("D:\test.txt", sb.ToString());
    }
}
Using writer = New StreamWriter("d:\test.txt")
    While dr.Read()
        Dim id = dr.GetInt32(0)
        Dim name = dr.GetString(1)
        Dim dept = dr.GetString(2)

        writer.WriteLine(String.Format("{0} {1} {2}", id, name, dept))
    End While
End Using