本帖最后由 Always. 于 2013-9-23 23:00 编辑
问题1:在C#中,close(),flush()以及dispose()这三种方法有什么区别 ?分别在什么情况情况下使用 ? (PS:求案例)问题2:为什么在数据导出的时候,使用using和flush是一样的效果。
使用using释放代码:- if (ofdOutput.ShowDialog() != DialogResult.OK)
- {
- MessageBox.Show("导出失败");
- }
- string dataDir = AppDomain.CurrentDomain.BaseDirectory;
- if (dataDir.EndsWith(@"\bin\Debug\")
- || dataDir.EndsWith(@"\bin\Release\"))
- {
- dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
- AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
- }
- using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\我的第一个mdf解决\数据导出\Database6.mdf;Integrated Security=True;User Instance=True"))
- {
- conn.Open();
- using (SqlCommand cmd = conn.CreateCommand())
- {
- cmd.CommandText = "select * from T_Persons";
- using (SqlDataReader reader = cmd.ExecuteReader())
- {
- using (FileStream filestream = new FileStream(ofdOutput.FileName, FileMode.Append, FileAccess.Write))
- {
- using (StreamWriter sw = new StreamWriter(filestream))
- {
- while (reader.Read()) //逐行读取每一个信息,比如第一行
- {
- string name = reader.GetString(reader.GetOrdinal("Name")); //比如读取第一行中Name那里列中的内容
- string age = reader.GetString(reader.GetOrdinal("Age")); //比如读取第一行中Age那里列中的内容
- string line = name + "|" + age;
- sw.WriteLine(line);
- }
- }
-
- }
- }
- MessageBox.Show("导出成功");
- }
- }
复制代码 使用 Flush()的代码(给出的是有区别的代码,未给出的代码跟上面是相同的):- using (FileStream filestream = new FileStream(ofdOutput.FileName, FileMode.Append, FileAccess.Write))
- {
- StreamWriter sw = new StreamWriter(filestream);
-
- while (reader.Read()) //逐行读取每一个信息,比如第一行
- {
- string name = reader.GetString(reader.GetOrdinal("Name")); //比如读取第一行中Name那里列中的内容
- string age = reader.GetString(reader.GetOrdinal("Age")); //比如读取第一行中Age那里列中的内容
- string line = name + "|" + age;
- sw.WriteLine(line);
- }
- sw.Flush();
- }
复制代码 |