richardli79

导航

SmartPhone2003SE数据存储-序

    上次说了XML方式存储,也说了ADO.NET的DataSet。这次换成自定义文件的存储,最近才发现使用纯文本方式进行数据交换也很爽,只要没有什么怪的数据就行了。对于一般的业务数据是够了。
    首先是数据格式,首先是能够很容易获得的格式,总不能让我们一条条手输把,有现成的数据源了,导出来一份就行。我用的SQL SERVER导出数据的方式,使用企业管理器(就会用那个:(),导出数据,导成文本方式,然后选择文件类型(我用unicode),行分隔符(我用默认就是回车换行)、列分隔符(我用逗号)与文本限定符(我没用,那个占地方)。这样就有数据了。这个可是源数据了。然后就是怎么读进去,怎么变成DataSet里面的数据了。这个文件小,因为不向XML文件有那么多的标签之类的。
    刚刚学到的用正则表达式格式化字符串。           
System.IO.StreamReader sr = new System.IO.StreamReader("employees.dat");
string fileText = sr.ReadToEnd();
sr.Close();
string regexString = "";
forint i = 0; i < 2; i++ )
{
regexString 
+= @"([a-zA-Z0-9]+),";
}

regexString 
+= @"([a-zA-Z0-9]+)";
System.Text.RegularEx70ressions.Regex re 
= new System.Text.RegularExpressions.Regex( regexString );
dt.Columns.Add(
"a");
dt.Columns.Add(
"b");
dt.Columns.Add(
"c");
dt.BeginLoadData();
foreach( System.Text.RegularExpressions.Match ma in re.Matches( fileText ) )
{
object[] values = {ma.Groups[1], ma.Groups[2],ma.Groups[3]};
dt.LoadDataRow( values, 
true );
}


关键就是那个System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex( regexString );
这个表示使用我定义的正则表达式来格式化输入的文本。
@"([a-zA-Z0-9]+),"是正则表达式的格式,表示使用[a-zA-Z0-9]+来分组找到的数据。[a-zA-Z0-9]+表示至少找到一个符合这个规则的数据[a-zA-Z0-9]表示规则的范围匹配的数据是所有字母与数字。我用的逗号作分隔符,所以碰到逗号就结束这个规则了。@"([a-zA-Z0-9]+),"整体就是表示当找到这个规则的字符串就行,例如字符串“aaaaa,bbbbb,cfccc”.第一个分组就是aaaaa,符合的规则就是"aaaaa,"a在[a-zA-Z0-9]范围内就继续,找到二个a,然后一直到第5个a,继续找,下一个不是了,就把前面的"aaaaa",作为一个分组数据放好,等着System.Text.RegularExpressions.Match的Group来取了,然后就找到",",就符合([a-zA-Z0-9]+),规则了,然后继续了。
    这个格式是我用的一个格式,无法处理为字符串数据例如中文。

posted on 2005-03-31 15:41  Richard  阅读(455)  评论(0编辑  收藏  举报