C#可重用库,将文本文件视为数据库表格?

3
我希望将数值以逗号或制表符分隔的形式存储在文本文件中(无所谓哪种形式)。 我正在寻找一个可重用的库,可以像操作sql表格一样操作该文本文件中的数据。
我需要"select * from ..."和"delete from where ID =......"(ID将是文本文件中的第一列)。 是否有代码Plex项目可以做这种事情?
我不需要复杂的功能,如连接或关系。 我只会有1个文本文件,它将成为1个数据库表格。

http://www.mikeduncan.com/sqlite-on-dotnet-in-3-mins/ - Michael Buen
伙计们,认真点,第一个把SQLLite作为答案发布并被接受的人,从没听说到实现只用了20分钟,这相当出色(是的,包括创建数据库结构)。 - JL.
7个回答

3

3

2

使用ODBC。Microsoft Text Driver支持csv文件,我认为这是可能的。我没有测试过是否可以通过ODBC进行操作,但您可以轻松测试。 对于查询,您还可以使用linq。


糟糕,我在问题中应该说明,我不想使用ODBC,因为那意味着额外的管理和部署麻烦。但是非常感谢您的建议。 - JL.
@JL:如果使用ODBC,您需要部署什么?当您使用ODBC使用访问数据库文件时,是否需要部署任何内容? - Hemant
@Hermant - 这个需求是事后想到的,用于存储应用程序的内部内容,因此我不想再创建另一个部署步骤。我考虑使用数据集并将其序列化为文本文件。 - JL.

2

您是否看过FileHelpers库?它具有将文本文件读取和解析为CLR对象的功能。结合像LINQ to Objects这样的工具,您就可以拥有所需的功能。


糟糕。当你半睡半醒,手指不灵活时回答问题的问题。 - Agent_9191

1
public class Item
{
    public int ID { get; set; }
    public string Type { get; set; }
    public string Instance { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        string[] lines = File.ReadAllLines("database.txt");

        var list = lines
                .Select(l =>
                    {
                        var split = l.Split(',');
                        return new Item
                        {
                            ID = int.Parse(split[0]),
                            Type = split[1],
                            Instance = split[2]
                        };
                    });

        Item secondItem = list.Where(item => item.ID == 2).Single();

        List<Item> newList = list.ToList<Item>();
        newList.RemoveAll(item => item.ID == 2);

        //override database.txt with new data from "newList"
    }
}

数据删除怎么办?LINQ 用于查询,不用于操作。但是,List 提供了基于谓词的 RemoveAll 方法,可以实现你想要的功能:
newList.RemoveAll(item => item.ID == 2);

此外,您还可以查看更高级的解决方案"LINQ to Text or CSV Files"


0
我还建议使用ODBC。这不应该使部署复杂化,整个配置可以在连接字符串中设置,因此您不需要DSN。
结合一个schema.ini文件,您甚至可以设置列名和数据类型,请查看MS的知识库文章


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接