高手请看,C#就SQL中某表的某几列写入到带制表符的TXT文本文档,哪里有错啊?

Qcls2009 2010-01-07 10:19:29
string str_File = "";
string SaveFileName="";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
SaveFileName = saveFileDialog1.FileName;
}
SaveFileName = SaveFileName + ".txt";
string strConn = string.Format("server={0};uid={1};pwd={2};database={3};", txtServer.Text, txtUserName.Text, txtUserPass.Text, cbmDataBase.Text);
using (SqlConnection conn = new SqlConnection(strConn))
{
try
{
conn.Open();
//加载数据库表

SqlCommand cmd = new SqlCommand("select sno,sname,ssex,sage,sdept from "+cmbTable .Text , conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
str_File = str_File + dr["sno"].ToString();
str_File = str_File + dr["sname"].ToString();
str_File = str_File + dr["ssex"].ToString();
str_File = str_File + dr["sage"].ToString();
str_File = str_File + dr["sdept"].ToString();
str_File = str_File + "\r\n";
}
dr.Close();
if (File.Exists(SaveFileName))
{
MessageBox.Show("该文件已经存在!已经被删除,请重新再次导出即可");
File.Delete(SaveFileName);
return;
}
else
{
StreamWriter sw = File.CreateText(SaveFileName);
//创建文本文件
sw.Write(str_File);
MessageBox.Show("写入文件成功");
}


}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

我写了这段代码,txt文档是导出了,可是里面没有值,为什么?请高手们指点
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aqxd2009 2010-01-07
  • 打赏
  • 举报
回复
你少了制表符\t和 sw.Flush();
sw.Close();
Aqxd2009 2010-01-07
  • 打赏
  • 举报
回复
我给你改了下,我测试是对的,你试试看:
string str_File = "";
string SaveFileName = "";
if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
{
return;
}
SaveFileName = saveFileDialog1.FileName;
SaveFileName = SaveFileName + ".dat";
string strConn = string.Format("server={0};uid={1};pwd={2};database={3};", txtServer.Text, txtUserName.Text, txtUserPass.Text, cbmDataBase.Text);
using (SqlConnection conn = new SqlConnection(strConn))
{
try
{
conn.Open();
//加载数据库表

SqlCommand cmd = new SqlCommand("select sno,sname,ssex,sage,sdept from " + cmbTable.Text, conn);
SqlDataReader dr = cmd.ExecuteReader();

//输出列头
str_File += "sno" + "\t";
str_File += "sname" + "\t";
str_File += "ssex" + "\t";
str_File += "sage" + "\t";
str_File += "sdept" + "\t";
str_File += "\r\n";
while (dr.Read())
{
str_File = str_File + dr["sno"].ToString() + "\t";
str_File = str_File + dr["sname"].ToString() + "\t";
str_File = str_File + dr["ssex"].ToString() + "\t";
str_File = str_File + dr["sage"].ToString() + "\t";
str_File = str_File + dr["sdept"].ToString() + "\t";
str_File = str_File + "\r\n";
}
dr.Close();
if (File.Exists(SaveFileName))
{
//MessageBox.Show("该文件已经存在!已经被删除,请重新再次导出即可");
//File.Delete(SaveFileName);
MessageBox.Show("该文件已经存在,请重新导出");
return;
}
else
{
StreamWriter sw = File.CreateText(SaveFileName);
//创建文本文件
sw.WriteLine(str_File);
sw.Flush();
sw.Close();
MessageBox.Show("写入文件成功");
}


}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
yymycabbage 2010-01-07
  • 打赏
  • 举报
回复
ls两位应该能解决你的问题了,另外我觉得你这个大量数据字符串操作还是用StringBuilder的好
str_File = str_File + dr["sno"].ToString() + "\t";
改成
StringBuilder sb=new StringBuilder();
sb.Appand(dr["sno"].ToString());
sb.Appand("\t");

111,115

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧