C# 与应用程序链接的内置数据数据库

C# 与应用程序链接的内置数据数据库,c#,C#,我正在用C#编写一个应用程序,我需要一个内置数据的数据库,该数据库与应用程序链接。我将永远不需要编辑数据,我只需要方便地访问它 基本上我需要它,因此我将数据内置到应用程序中,如下所示: Book Title Book Author SomeBookTitle SomeBookAuthor SomeOtherBookTitle SomeOtherBookAuthor 书名书作者 书名,书名,作者 SomeOtherBookTitle SomeOtherB

我正在用C#编写一个应用程序,我需要一个内置数据的数据库,该数据库与应用程序链接。我将永远不需要编辑数据,我只需要方便地访问它

基本上我需要它,因此我将数据内置到应用程序中,如下所示:

Book Title Book Author SomeBookTitle SomeBookAuthor SomeOtherBookTitle SomeOtherBookAuthor 书名书作者 书名,书名,作者 SomeOtherBookTitle SomeOtherBookAuthor
有点像这样?易于访问,最好以某种方式与应用程序链接,因此我只有1个可执行文件。哦,还有可能有很多数据…

如果你只有两个字段,你可以使用一个资源文件,使用键作为书名,使用值作为作者。

您还可以添加Sql Server compact数据库

您可以这样编写代码:

SqlDataReader rdr = null;
SqlConnection conn = new SqlConnection( /*Connection string*/ );

SqlCommand cmd  = new SqlCommand("select * from  Books", conn);
conn.Open();
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
   string bookTitle= (string)rdr["Book Title"];
   string bookAuthor = (string)rdr["Book Author"];

   Console.Write("{0,-25}", bookTitle);
   Console.Write("{0,-20}", bookAuthor );

   Console.WriteLine();
}

到目前为止,我建议采用与其他方法不同的方法

我不会使用资源文件,因为您可能不想硬编码资源文件中每一行的每个引用。100本“书”意味着100种不同的资源可以进行编码

如果您想要自包含部署,第三方组件是有问题的

我的建议是:将所有数据放在XML结构中,并将该XML作为单个资源放在资源文件中

<?xml version="1.0" standalone="yes"?>
<books>
    <book Author="Joe" Title="Joe's Awesome"/>
    <book Author="Fred" Title="Joe's Stupid"/>
    <book Author="Tim" Title="Who's Joe"/>
</books>

或者,您可以使用LinqToXml或任何数量的替代方案。

就您的数据库需求而言,像SQLite或SQL Server CE这样的嵌入式数据库应该可以做到这一点。有点像……;)

你知道“我永远不需要编辑数据”是著名的临终遗言,对吗?;)@丹尼尔·埃尔威克可能很多@邪恶的Greebo如果我想要编辑数据,我可以用更新的数据重建应用程序。书的例子只是一个例子,我不一定要用书来研究NHibernate。它将您的代码映射到数据库您将使用/读取此数据的频率是多少?你在回忆它吗?或者你会像db(按需)Id一样访问它,将数据拉入内存,这样我就可以在一个组合框中有书籍标题,然后在下面有一个只读文本框,当我选择标题时,它会在文本框中显示作者。+1如果你只有几个不变的值(听起来像OP)只在资源文件中嵌入值要容易得多,而且需要的开销也要少。如果只有几个值,当然可以。如果你有100本“书”,那么现在你有了MyResources.Book1、MyResources.Book2、MyResources.Book3等等。这就像使用列来表示一年中的月份一样——每年你需要再添加12列。他说可能有很多数据。他从未提到他不想使用数据库,尽管使用xml文件存储数据是个好主意,但我的回答也没有错。他说他想知道在哪里/如何存储这些数据。您没有回答这两个问题。他没有在整个页面中询问“在哪里/如何存储此数据”,他需要一些机制来“轻松访问hid数据”,我提供了一种机制来访问存储在数据库中的数据。我认为您需要仔细阅读问题…“基本上我想要它,所以我将数据内置到应用程序中…”您的答案如何提供解决此问题的方法?此外,您没有关闭连接,因此您的示例甚至不正确。
XDocument xd = new XDocument(XDocument.Parse(myResources.MyData));
foreach(XElement xe in xd.Elements) { // blah blah blah }