2 lucifer635 Lucifer635 于 2015.07.16 00:47 提问

用C#将数据库的数据导出,结果生成的txt是空的,求大神看一下代码哪里不对?
c#

private void button1_Click(object sender, EventArgs e)
{

        FileDialog sfd = new SaveFileDialog();

      if (sfd.ShowDialog() == DialogResult.OK)
        {
            using (FileStream fstream = File.OpenWrite(sfd.FileName))
            {
                StreamWriter sw = new StreamWriter(fstream, System.Text.Encoding.GetEncoding("GB2312"));

                using (SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=PhoneBook;Integrated Security=SSPI"))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select * from Phone3";
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                int id = reader.GetInt32(reader.GetOrdinal("编号"));
                                string users = reader.GetString(reader.GetOrdinal("用户"));
                                string group = reader.GetString(reader.GetOrdinal("分组"));
                                string name = reader.GetString(reader.GetOrdinal("姓名"));
                                string company= reader.GetString(reader.GetOrdinal("工作单位"));
                                string number = reader.GetString(reader.GetOrdinal("联系电话"));
                                string email = reader.GetString(reader.GetOrdinal("电子邮件"));
                                sw.WriteLine(number + "|" + users+"|"+group+"|"+name+"|"+company+"|"+number+"|"+email);

                            }
                            sw.Flush();
                            sw.Close();
                        }
                    }
                    conn.Close();
                }
                MessageBox.Show("数据导出成功!");
            }
        }
    }         
}

}

从端点调试来看好像是 string users = reader.GetString(reader.GetOrdinal("用户")); 这句没有正常执行。求大神们明示啊~

5个回答

bdmh
bdmh   Ds   Rxr 2015.07.16 05:34

是不是报错了,有错误信息吗

caozhy
caozhy   Ds   Rxr 2015.07.16 05:46

检查你的数据库有没有这个字段,类型是否相符。什么没有正确执行?

lzp_lrp
lzp_lrp   Ds   Rxr 2015.07.16 08:41

string users = reader.GetString(reader.GetOrdinal("用户"))

应该是数据库表Phone3里没有用户这个字段或者字段不是这个名字引起的,核对一下数据,另外建议你不要用
select * from Phone3

直接用

select 编号,用户.... from phone3这样比较好

save4me
save4me   Ds   Rxr 2015.07.16 09:34

你在while里面使用try{}catch(Exception ex){},这样如果有错误,可以捕获异常信息,比如数据类型转换失败,字段不存在之类的,然后可以根据相应的错误信息寻找解决方法。

defrt4
defrt4   2015.07.16 10:40

目测是你的数据库里面这个字段的名字或者类型不正确,可以捕捉一下异常,看看到底是什么原因,另外
尝试下 string users=reader["用户"].ToString();

Csdn user default icon
上传中...
上传图片
插入图片