C# 将DataTable存储到DBF文件中

发表于:2016-4-21 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:sky410    来源:51Testing软件测试网采编

  (准备)生成一个DataTable
1 /// <summary>
2 /// 生成一个数据表
3 /// </summary>
4 /// <returns></returns>
5 static DataTable GetTable()
6 {
7     try
8     {
9         DataTable dt = new DataTable("Characters");
10
11         dt.Columns.Add("Column0");
12         dt.Columns.Add("Column1");
13         dt.Columns.Add("Column2");
14         dt.Columns.Add("Column3");
15
16         dt.Rows.Add("abc", "def", "ghi", "jkl");
17         dt.Rows.Add("def", "ghi", "jkl", "mno");
18         dt.Rows.Add("ghi", "jkl", "mno", "pqr");
19         dt.Rows.Add("jkl", "mno", "pqr", "stu");
20
21         Console.WriteLine("Set DataTable: " + dt.TableName);
22         foreach (DataRow dr in dt.Rows)
23         {
24             foreach (object  obj in dr.ItemArray)
25             {
26                 Console.Write(obj.ToString() + " ");
27             }
28             Console.WriteLine();
29         }
30         Console.WriteLine("Mission complete!");
31
32         return dt;
33     }
34     catch
35     {
36         return null;
37     }
38 }
  函数:将DataTable的内容输出到DBF文件
1 /// <summary>
2 /// 将数据表写入到DBF文件中
3 /// </summary>
4 /// <param name="dt"></param>
5 static void WriteToDbf(DataTable dt)
6 {
7     Console.WriteLine("Writing to: " + dt.TableName + ".dbf ...");
8
9     //连接字符串
10     string sConn =
11         "Provider=Microsoft.Jet.OLEDB.4.0; " +
12         "Data Source=" + System.IO.Directory.GetCurrentDirectory() + "; " +
13         "Extended Properties=dBASE IV;";
14     OleDbConnection conn = new OleDbConnection(sConn);
15     conn.Open();
16
17     try
18     {
19         //如果存在同名文件则先删除
20         if (File.Exists(dt.TableName + ".dbf"))
21         {
22             Console.WriteLine("Delete file: " + dt.TableName + ".dbf ...");
23             File.Delete(dt.TableName + ".dbf");
24         }
25
26         OleDbCommand cmd;
27
28         //建立新表
29         StringBuilder sbCreate = new StringBuilder();
30         sbCreate.Append("CREATE TABLE " + dt.TableName + ".dbf (");
31         for (int i = 0; i < dt.Columns.Count; i++)
32         {
33             sbCreate.Append(dt.Columns[i].ColumnName);
34             sbCreate.Append(" char(25)");
35             if (i != dt.Columns.Count - 1)
36             {
37                 sbCreate.Append(", ");
38             }
39             else
40             {
41                 sbCreate.Append(')');
42             }
43         }
44
45         Console.WriteLine("\nCreating Table ...");
46         Console.WriteLine(sbCreate.ToString());
47         cmd = new OleDbCommand(sbCreate.ToString(), conn);
48         cmd.ExecuteNonQuery();
49
50         //插入各行
51         StringBuilder sbInsert = new StringBuilder();
52         foreach (DataRow dr in dt.Rows)
53         {
54             sbInsert.Clear();
55             sbInsert.Append("INSERT INTO " + dt.TableName + ".dbf (");
56             for (int i = 0; i < dt.Columns.Count; i++)
57             {
58                 sbInsert.Append(dt.Columns[i].ColumnName);
59                 if (i != dt.Columns.Count - 1)
60                 {
61                     sbInsert.Append(", ");
62                 }
63             }
64             sbInsert.Append(") VALUES (");
65             for (int i = 0; i < dt.Columns.Count; i++)
66             {
67                 sbInsert.Append("'" + dr[i].ToString() + "'");
68                 if (i != dt.Columns.Count - 1)
69                 {
70                     sbInsert.Append(", ");
71                 }
72             }
73             sbInsert.Append(')');
74
75             Console.WriteLine("\nInserting lines ...");
76             Console.WriteLine(sbInsert.ToString());
77             cmd = new OleDbCommand(sbInsert.ToString(), conn);
78             cmd.ExecuteNonQuery();
79         }
80     }
81     catch (Exception ex)
82     {
83         Console.WriteLine(ex.Message);
84     }
85
86     conn.Close();
87 }
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号