下面是数据文本文件的格式
“#”号是注释
“T:”是加入
“D:”是删除表里面的数据
“C:”是检查数据
数据与数据之间用TAB隔开(可以从企业管理器直接把数据拷贝出来作为数据源)
加入数据的事列如下:
#插入用户表
null为插入空
T:Users
John
1<tab>John chan
2Cake<tab>Cake.lu
3jeff<tab>jeff.hu
4
5# CheckTable's Data
6#null为检查是否为空,skip掉过不检查,notnull检查他是否不为空
7C:Users
8John <tab>John chan
9Cake<tab>Cake.lu
10jeff<tab>jeff.hu
11
12#Delete All Data
13D:TAbleName
14
15调用代码:
16参数1:文本文件的路径
17参数2:是Helper里面的两个常量(其实可以是个Enum,不过写的时候没有注意)
18Helper.ExecuteAction("Data.txt",Helper.INSERT);
19
20参数3:是指定对那个对象操作(T:D:C:后面的名称,如T:Users,那么就填Users)
21Helper.ExecuteACtion("Data.txt",Helper.Insert,"Users")
22
23代码如下:
24
25using System;
26using System.Data;
27using System.IO;
28using System.Data.SqlClient;
29using Microsoft.ApplicationBlocks.Data;
30using NUnit.Framework;
31
32namespace TestCore
33{
34
35public class Helper
36{
37public const string DELETE="D";
38public const string INSERT="T";
39public const string CHECK="C";
40public const string ANNOTATE="#";
41
42public static string ConnectionString
43{
44//这里要写返回的连接字符串
45get{return null;}
46}
47public static void ExecuteAction(string path,string action)
48{
49ExecuteAction(path,action,null);
50}
51
52public static void ExecuteAction(string path,string action,string inputTable)
53{
54Console.WriteLine("----------------"+action+" action is Start--------------------");
55
56StreamReader reader=new StreamReader(path);
57string line;
58string table=null;
59try
60{
61while(true)
62{
63line =reader.ReadLine();
64if(line==null)
65break;
66
67if(line.Length==0)
68continue;
69string Key=line.Substring(0,1);
70if(Key==action)
71{
72table=line.Substring(2);
73if(action==DELETE)
74{
75if(CheckTable(inputTable,table))
76{
77Delete(table);
78}
79table=null;
80}
81else
82{
83continue;
84}
85}
86else if(table!=null)
87{
88switch(action)
89{
90case INSERT:
91if(CheckTable(inputTable,table))
92{
93string[] datas=line.Split('\t');
94AddData(datas,table);
95}
96break;
97case CHECK:
98if(CheckTable(inputTable,table))
99{
100string[] checkDatas=line.Split('\t');
101Check(checkDatas,table);
102
103}
104break;
105}
106table =null;
107}
108else
109{
110continue;
111}
112}
113}
114finally
115{
116Console.WriteLine("----------------"+action+" action is End--------------------");
117reader.Close();
118}
119}
120private static bool CheckTable(string inputTable,string SettingTable)
121{
122if(inputTable==null)
123return true;
124return (inputTable==SettingTable);
125}
126
127private static void Delete(string table)
128{
129string sql=" delete from "+table;
130Console.WriteLine(sql);
131try
132{
133SqlHelper.ExecuteNonQuery(ConnectionString,CommandType.Text,sql);
134}
135catch(Exception e)
136{
137throw new ApplicationException("删除错误:Sql是"+sql,e);
138}
139}
140private static void AddData(string[] data,string table)
141{
142SqlConnection conn=new SqlConnection(ConnectionString);
143string sql="insert into "+table+" values ";
144string temp="('"+data[0]+"'";
145for(int i=1;i<data.length;i++) )="" +data[i]+"'";="" +table;="" ,but="" ;="" actualy");="" applicationexception(table+":"+sql,e);="" argumentoutofrangeexception(="" assert.isfalse(dr[i].equals(dbnull.value),"expect="" assert.istrue(dr[i].equals(dbnull.value),"expect="" but="" catch(exception="" check(string[]="" comm="new" comm.executenonquery();="" conn.close();="" conn.open();="" console.writeline(sql);="" continue;="" data,string="" dataset="" datatable="" dr="" ds="SqlHelper.ExecuteDataset(Helper.ConnectionString,CommandType.Text,sql);" dt="ds.Tables[0];" dt.rows)="" e)="" else="" finally="" for(int="" foreach(datarow="" i="0;i<data.Length;i++)" if(data[i]!="null" if(data[i].length="" if(data[i].tolower()="notnull" if(dt.rows.count="0)" in="" is="" isn't="" it's="" new="" not="" null="" private="" sql="select * from " sql+='temp+")";' sql+"="" sqlcommand="" sqlcommand(sql,conn);="" static="" string="" table)="" temp+=",null" throw="" try="" void="" {="" }="" 返回结构为空");="">=4 && data[i].Substring(0,4).ToLower()=="not:")
146{
147string txtValue=data[i].Substring(4).ToLower().Trim();
148string dbValue=dr[i].ToString().ToLower().Trim();
149Assert.IsTrue(txtValue!=dbValue,"db value is the same as data in text file,text file value is "+txtValue);
150continue;
151}
152
153if(dr[i].ToString().Length!=0 || dr[i].Equals(DBNull.Value))
154{
155Assert.IsTrue(dr[i].ToString()==data[i],table+":Check Value Is "+data[i]+",but DB is "+dr[i]);
156continue;
157}
158}
159}
160}
161}
162}</data.length;i++)></tab></tab></tab></tab></tab></tab>