Xamarin Android C# SQLite

3

我是Android新手。

我正在使用Visual Studio上的Xamarin,用C#进行编码。

我已看过有关在Android设备上创建数据库的示例,但这不是我要寻找的。

是否有人有使用Assets文件夹中已有的sqlite数据库的代码(C#),而不是在Android设备上创建新数据库的代码?


C#示例用于Android SQLite????? - Deepak Bhatia
所以基本上你是在问如何打开一个已经存在的数据库?我们使用 https://github.com/praeclarum/sqlite-net 来实现。你需要创建一个继承自 SQLiteConnection 的类,并将数据库文件名传递给构造函数。例如:http://goo.gl/8I6Sf2 (在 Android 上完全相同)。但实际上,创建新文件和打开现有文件没有区别,因此我认为你的问题可能没有很好地定义。 - TimothyP
2个回答

0

打开现有的SQLite数据库与创建新数据库几乎没有什么区别。

假设您正在使用sqlite-net(您应该这样做),
您所需要做的就是创建一个继承自SQLiteConnection的类。

public class CustomerDatabase : SQLiteConnection
{
    public CustomerDatabase(string filename) : base(filename, true)
    {
        //This will open the database file specified by filename
    }   
}

如果指定的文件名引用了一个现有的数据库,那么这个数据库将会被打开。
如果指定的文件不存在,那么就会尝试创建一个新的数据库。

此时我假设您有两个问题:

  1. 即使您没有将模型定义为应用程序的一部分,您仍希望打开和操作数据库。
    这意味着您的应用程序并不知道数据库实际上是什么样子。因此,唯一的选择是定义它们或执行原始的SQL查询并处理动态响应。
  2. 您已经将一个现有的数据库添加到 assets 文件夹中,但据我所知,在运行时无法对这些文件执行写操作。
    相反,您应该在应用程序第一次启动时将数据库复制到正常存储位置。

除此之外,您应该已经准备好了。


请注意,sqlite-net库也可以通过NuGet获取,并且您通常只需将这两个.cs文件添加到项目中即可。在所有桌面平台以及Android上都能完美地工作。 - TimothyP

0

你需要将数据库文件从Assets文件夹复制到设备的某个位置,然后在应用程序中使用它。请注意,您只需要在应用程序首次启动时执行此操作一次。


我搞定了... 你可以在这里找到示例。http://stackoverflow.com/questions/23425201/android-xamarin-c-sharp-no-record-added-to-sqlite - user1929393
以上链接已经失效-@user1929393,您能否提供一次性将文件复制到内部存储的示例代码? - Nitin Sawant

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