数据导入导出

1.首先建立一个windows 窗体项目,然后添加一个基于服务的数据库DataImport.mdf。

2.建立一个T_Users表,字段设置如下。

3.拖入两个按钮,设置为导入导出。

4.向form中拖入一个OpenFileDialog和一个SaveFileDialog对话框。

5.在program.cs中添加如下代码:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Windows.Forms;
5
6 namespace 数据导入导出
7 {
8 static class Program
9 {
10 ///<summary>
11 /// 应用程序的主入口点。
12 ///</summary>
13 [STAThread]
14 static void Main()
15 {
16 string dataDir = AppDomain.CurrentDomain.BaseDirectory;
17 if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
18 {
19 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
20 AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
21 }
22 Application.EnableVisualStyles();
23 Application.SetCompatibleTextRenderingDefault(false);
24 Application.Run(new Form1());
25 }
26 }
27 }

6.双击导入和导出按钮分别写它们的事件,代码如下:

 

 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Data.SqlClient;
10 using System.IO;
11
12 namespace 数据导入导出
13 {
14 public partial class Form1 : Form
15 {
16 public Form1()
17 {
18 InitializeComponent();
19 }
20
21 private void btnImport_Click(object sender, EventArgs e)
22 {
23 if (ofdImport.ShowDialog() != DialogResult.OK)
24 {
25 return;
26 }
27 using (FileStream fileStream = File.OpenRead(ofdImport.FileName))
28 {
29 using (StreamReader streamReader = new StreamReader(fileStream))
30 {
31 using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DataImprot.mdf;
32 Integrated Security=True;User Instance=True"))
33 {
34 conn.Open();
35 using (SqlCommand cmd = conn.CreateCommand())
36 {
37 cmd.CommandText = "insert into T_Users(Username,Age) values(@Username,@Age)";
38 string line = null;
39 while ((line = streamReader.ReadLine()) != null)
40 {
41 string[] strs = line.Split('|');
42 string username = strs[0];
43 int age = Convert.ToInt32(strs[1]);
44 cmd.Parameters.Clear();//每次数据改变都必须清空
45 cmd.Parameters.Add(new SqlParameter("Username", username));
46 cmd.Parameters.Add(new SqlParameter("Age", age));
47 cmd.ExecuteNonQuery();
48 }
49 }
50 }
51 }
52 }
53 MessageBox.Show("导入成功!");
54 }
55
56 private void btnExport_Click(object sender, EventArgs e)
57 {
58 if (sfdExport.ShowDialog() != DialogResult.OK)
59 {
60 return;
61 }
62 using (FileStream fileStream = File.OpenWrite(sfdExport.FileName))
63 {
64 using (StreamWriter writer = new StreamWriter(fileStream,Encoding.GetEncoding("UTF-8")))//统一编码来解决中文乱码问题
65 {
66 using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DataImprot.mdf;
67 Integrated Security=True;User Instance=True"))
68 {
69 conn.Open();
70 using (SqlCommand cmd = conn.CreateCommand())
71 {
72 cmd.CommandText = "select Username,Age from T_Users";
73 using (SqlDataReader reader = cmd.ExecuteReader())
74 {
75 StringBuilder sb = null;
76 while (reader.Read())
77 {
78 sb = new StringBuilder("");
79 string username = reader.GetString(reader.GetOrdinal("Username"));
80 string age = Convert.ToString(reader.GetInt32(reader.GetOrdinal("Age")));
81 sb.Append(username).Append("|").Append(age);
82 writer.WriteLine(sb);
83 }
84 writer.Flush();
85 }
86 }
87 }
88 }
89 }
90 MessageBox.Show("导出成功!");
91 }
92 }
93 }
94
95

 

7.新建一个文本文件:import.txt, 因为文本文件系统默认为ANSI编码格式,所以我们需要把它另存为UTF-8格式覆盖原来的文件以避免中文乱码。

向其中添加如下内容或者用中文也可以。

 

 

8.运行程序,点击导入按钮开始向数据库中导入数据,打开import.txt。

9.程序提示导入成功。

10.刷新数据库,查看表中的数据,显示如果表中有如下数据证明导入成功。

11.测试导出功能,点击导出按钮,弹出另存为对话框,输入要保存的文本文件名:export.txt,点击保存。

12.程序提示导出成功!

13.查看export.txt文件中的导出后的数据。

posted @ 2011-12-16 08:30  keepLearning...  阅读(722)  评论(2)    收藏  举报