65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 类:文本文件作为数据库

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.30/5 (24投票s)

2007年10月17日

CPOL

4分钟阅读

viewsIcon

93533

downloadIcon

4616

本文尝试解释如何使用文本文件作为简单的数据库。

Object

引言

我编写了这个类用于移动项目(.net compact framework)。 我尝试使用 SQL Compact,但它占用了大量资源。
本文将尝试向您展示 C# 中类的一些强大特性,要了解它们,您应该具备一些 Csharp 的基本知识。
我们将创建一个类,该类将为我们提供一些预制功能,以将简单的文本文件用作数据库。
类的简单解释

“在面向对象编程中,类是用于分组相关实例变量和方法的编程语言结构。
方法(在某些语言中称为函数)是特定于类的指令集。
根据语言的不同,类可能支持多重继承,或者可能需要接口来扩展其他类。
类可以明确或抽象地指示程序执行时存在哪些方法。 后者被称为“抽象类”。
如果用作将被实例化的对象,则必须使用构造函数定义类。
但是,有些类,尤其是那些包含工厂方法的类,被定义为静态类,没有构造函数。
相反,它们只是以分层方式组织数据(例如,Math 类可能包含静态常量 PI 和静态方法 abs)。”
(维基百科)

结论:
如果我们将对象化,世界将有一个名为“人员”的类,它具有许多描述我们的功能和属性,而我们将成为这个类的一个对象 =)

创建数据库

列将用“;”分隔,我们不需要设置 ID 引用,因为我们将使用行号作为它。
因此,一个包含姓名、姓氏、电话、邮件和网站字段的数据库将如下所示

Renan;Duarte;323123131;renan@rodriguesduarte.net;software.botecodorenan.net
João;Carlos;14324;joao.carlos@test.com;www.joaocarlos.com
 ...

函数

  • 条目:返回行数。
  • CreateConfigFile:私有函数,用于验证数据库是否存在,如果需要,是否需要创建它。
  • DeleteEntrie:删除特定记录。
  • UpdateEntrie:更新特定记录的详细信息。
  • InsertEntrie:插入一条新记录。
  • 选择:在指定列中搜索内容。 返回以“;”分隔的 ID,否则返回“ERROR”。
  • ReadEntrie:读取一条记录。

调整代码以适应自定义列

在我的类中,我更喜欢通过代码设置列,而不是在数据库的第一行中进行设置,在我看来
这可以更好地避免将来的错误。 然后函数的标题将是

 public int ReadEntrie(int id, ref string name, ref string lastname, ref string phone, ref string mail, ref string website)

 public int InsertEntrie(string name, string lastname, string phone, string mail, string website)

 public int UpdateEntrie(int id,string name, string lastname, string phone, string mail, string website)

附注:如果您更改了列,您还需要更改数组选择。

设置属性

我创建了这个字段来获取和设置文本文件的路径。 如果它存在,很好,否则我们将创建此文件并像我们设置的那样使用它。

  private string data_path = "";
  public string Path
  {
       get { return data_path; }
       set { data_path = value; }
  }
上面的代码将给我们这个结果

Many choices

我们在第二张图片中看到的描述可以通过在任何函数或字段的标题之前插入summary来添加
 /// <summary>

 /// Get or Set the path of the text file!

 /// </summary>

创建对象

 private DataText conDB;
 private void Form1_Load(object sender, EventArgs e)
 {
 conDB = new DataText();
 conDB.Path = "C:\test.txt";
 fillComboList();
 }


请注意,我们必须设置路径,然后我们应该创建一个函数,该函数获取所有条目并填充另一个对象,例如 ComboBox、ListView 等。
附注:这应该很容易完成,获取条目数 DataText.Entries 并在使用 While 之后。

引擎

可以使用 FileStream 和 StreamReader 轻松读取所有记录。 读取该行后,您只需要将其拆分(使用“;”分隔符)。
然后您将拥有一个包含该行所有值的数组 =)
新条目将添加到文件的末尾,并且为了更新一行,我们将重写整个数据库。
这对我来说没问题,因为我没有太多记录。 否则,我们可以将文本保存在另一个对象中,该对象可以更好地处理这个问题。

其他功能

我们可以设置同名但参数不同的函数。 比如

 public int ReadEntrie(int id, ref string name)

我们将得到这个结果

Many choices

关注点

设置同名函数应该能够获得特定的变量变量,例如,仅姓名或仅邮件。
此代码为您提供了一些关于类的经验,这将是制作 dll 和其他组件的开始 =)
到目前为止,我还没有使用此类进行任何基准测试,但它应该非常适合小型数据库。

© . All rights reserved.