最近公司需要将数据库的信息备份称文本文件,从数据库读取指定数量的行数据,写入的文本文件里,可是每次写完都比实际的数据多出5行,很奇怪,把文件写到桌面,就正常。
代码如下:
            using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
            {
                while(reader.Read())        //reader 是SqlDataReader
                {
                    sw.WriteLine(reader[0]);
                }
                sw.Flush();
            }
对流和文件了解的朋友帮忙解答一下。
            

解决方案 »

  1.   

    sw.WriteLine(reader[0]);
    =>
    sw.Write(reader[0]);
      

  2.   

    为什么不用SQL直接导入导出呢?EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
    --整表导出
    SET @命令='bcp "' + @数据表+'" out '+ @导出文件路径名称 +'  -U"'+@用户名+'" -P"'+ @密码+'" -c'
    --SQL语句导出
    SET @命令='bcp "' + @SQL语句+'" queryout '+ @导出文件路径名称 +'  -U"'+@用户名+'" -P"'+ @密码+'" -c'exec xp_cmdshell @命令EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
      

  3.   

    --SQL语句导出
    SET @命令='bcp "' + @SQL语句+'" queryout '+ @导出文件路径名称 +' -U"'+@用户名+'" -P"'+ @密码+'" -c'
    这个语句就可以满足要求了啊,@SQL语句 就是你的查询语句 @导出文件路径名称就是导出保存的文件路径名称如:c:\test.txt ;导出的文件是在服务器上的