标签: sqlite-net

SQLite加入嵌入式数据库表

我目前正在为Windows 8编写一个Windows应用商店应用程序,我正在使用SQLite在Windows应用程序的类库中对嵌入式数据库进行持久化.我试图从我的嵌入式数据库中的两个不同表中加入数据,但SQLite不断从其GenerateCommand方法中抛出一个不受支持的异常.

我目前在两个表中都有数据,并且每个表中都有一个questionId可以加入.我尝试了两种不同的方法,它们都抛出相同的错误.

第一种方法:

    var q = (from gameTable in db.Table<Model.GameSaved>()
                 join qTable in db.Table<Questions>() on gameTable.QuestionId equals qTable.QuestionId
                 select qTable
                ).First();
Run Code Online (Sandbox Code Playgroud)

第二种方法:

    var q =
                (from question in db.Table<Model.GameSaved>()
                 select question
                ).Join(db.Table<Questions>(), 
                       game => game.QuestionId, 
                       questionObject => questionObject.QuestionId,
                       (game,questionObject) => questionObject)
                 .First();
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里缺少什么,但它必须是简单而明显的东西.

c# sqlite join windows-store-apps sqlite-net

6
推荐指数
1
解决办法
6566
查看次数

Sqlite-net日期时间检索

嗨,我有一个问题,使用sqlite-net库从SQLite数据库中检索datetime.Db列的类型为DATE,其中一个记录中的示例日期为:2013-08-02

我有一个模特:

internal class FCost
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    ...

    public DateTime AccountingDate { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

我执行这行代码:

var result = dc.Table<FCost>().ToArray();
Run Code Online (Sandbox Code Playgroud)

除AccountingDate之外的每个字段都正确填充,所有DateTime字段都填充值:{1/1/0001 12:00:00 AM}(visual studio debbuger view).为什么没有正确解析日期?我尝试将Db列类型切换为DATETIME和TEXT,但结果相同.

编辑.上面使用的对象dc是来自sqlite-net库的SQLiteConnection类型.

.net sqlite datetime sqlite-net

5
推荐指数
2
解决办法
2016
查看次数

无法打开数据库文件Windows Store App 8.1

我正在尝试在Windows 8.1 Modern UI应用程序中实现数据库.我成功地为Windows Phone 8.1应用程序做了这个,但它在新的Windows 8.1应用程序中不起作用.

当我实现时,我收到了一条SQLiteException消息Could not open database file: MyAppBase.db (CannotOpen)SQLiteConnection

public static DatabaseHelper Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new DatabaseHelper();
            }

            return _instance;
        }
    }

    public DatabaseHelper()
    {
        _connection = new SQLiteConnection(DATABASE_NAME);

        _connection.CreateTable<UserEntity>();
    }
Run Code Online (Sandbox Code Playgroud)

我按照以下步骤:在项目引用,Targetted build to x86上添加'sqlite-net'到Nuget引用,Checked'SQLite for Windows Runtime(Windows 8.1)'和'Microsoft Visual C++ 2013 Runtime Package for Windows'.

我怎样才能使这个工作?

windows-store-apps sqlite-net

5
推荐指数
1
解决办法
2307
查看次数

Sqlite一对多关系

我目前正在制作一个需要存储和从sqlite数据库获取数据的应用程序.我正在使用的两个Nuget包是Sqlite PCLSQLite-Net Extensions.

[Table("patient")]
public class Patient
{
[PrimaryKey]
public string ID { get; set;}

    public string FirstName { get; set; }
    public string LastName { get; set; }

    [OneToMany]
    public List<PatientVitals> PatientVitals { get; set; }
}

[Table("patientVitals")]
public class PatientVitals
{
    [PrimaryKey]
    public string VitalID {get;set;}

    public string Weight { get; set;}
    public string Height { get; set;}

    [ForeignKey(typeof(Patient))]
    public string SmartCardID {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

整个过程编译得很好,但是当我尝试运行模拟器时,我收到了这条消息:

抛出System.NotSupportedException不知道System.Collections.Generic.List1

我检查了SQLite-Net Extensions 文档,它确实支持List.

有谁知道如何解决这一问题?

c# generics list xamarin sqlite-net

5
推荐指数
1
解决办法
4395
查看次数

使用SQLiteAsyncConnection抛出MissingMethodException

第一次使用SQLite,选择了SQLite.net-pcl,

我有一个PCL库,我从我的UWP应用程序中消耗,我的PCL库有DBContext类:

public NewspaperDataContext(ISQLitePlatform sqLitePlatform, string applicationPath, string dataBaseName)
{
     _sqlConnection = new SQLiteAsyncConnection(()=> new SQLiteConnectionWithLock(sqLitePlatform, 
     new SQLite.Net.SQLiteConnectionString(Path.Combine(applicationPath, dataBaseName), storeDateTimeAsTicks: false)));

     CreateTableAsync(_sqlConnection, typeof(Article)).Result.Wait();
     CreateTableAsync(_sqlConnection, typeof(Author)).Result.Wait();
     CreateTableAsync(_sqlConnection, typeof(Category)).Result.Wait();
     CreateTableAsync(_sqlConnection, typeof(Group)).Result.Wait();

     var c = _sqlConnection.Table<Article>();
}

private async Task<Task> CreateTableAsync(SQLiteAsyncConnection asyncConnection, Type table)
{
     return asyncConnection.CreateTableAsync<Author>().ContinueWith((results) =>
     {
           Debug.WriteLine(!results.IsFaulted
           ? $"Error where creating the {nameof(table)} table !!"
           : $"Table {nameof(table)} created sucessfully!");
     });
}
Run Code Online (Sandbox Code Playgroud)

NewspaperDataContext从我的UWP应用程序中调用这样的:

private async void MainPage_OnLoaded(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# sqlite portable-class-library sqlite-net win-universal-app

5
推荐指数
1
解决办法
2393
查看次数

SQLite-Net Extensions - CreateTable函数是否会改变我现有的表?

我正在使用SQLite-net和TwinCoders NuGet来实现MvvmCross Xamarin项目中的扩展方法.我想让数据库保持更新,即使我将来会修改模型.

我的问题是:如果我使用CreateTable函数创建一个基于模型的SQLite表,并且平板电脑/手机上已存在数据库,但它有不同的结构(假设表中有一个缺少的列,已添加到最后更新),这个函数会改变现有的表吗?谢谢!

c# sqlite xamarin sqlite-net

5
推荐指数
1
解决办法
1215
查看次数

如何使用SQLite.Net-PCL在低级别查询?

我在UWP项目中使用SQLite.Net-PCL.现在,我需要阅读一行表格.我可以使用类似的东西:

var row = await _conn.QueryAsync<MyType>("SELECT * FROM MyTable WHERE ID=100");
Run Code Online (Sandbox Code Playgroud)

问题是该表有150列,我不想只为这个查询编写一个类(MyType).我想加载一个Dictionary<string, string>或类似的所有列,所以我可以得到我需要的值.

我怎么能用SQLite.Net-PCL包装器呢?

更新:

我需要检索的列名仅在运行时中已知,因此我无法创建类.最终目的是显示仪表板.用户可以从150的列表中选择6列.然后,我想在视图中仅显示这6列.

c# sqlite-net uwp

5
推荐指数
0
解决办法
528
查看次数

SQLite.NET PCL忙碌异常

我们在Xamarin应用程序中使用SQLite.NET PCL.

通过插入多个表将数据库置于压力之下,我们看到抛出BUSY异常.

任何人都可以解释BUSY和LOCKED之间的区别吗?是什么导致数据库忙?

我们的代码使用与使用以下代码创建的数据库的单个连接:

var connectionString = new SQLiteConnectionString(GetDefaultConnectionString(), 
                                                      _databaseConfiguration.StoreTimeAsTicks);
var connectionWithLock = new SQLiteConnectionWithLock(new SQLitePlatformAndroid(), connectionString);

return new SQLiteAsyncConnection (() => { return connectionWithLock; });
Run Code Online (Sandbox Code Playgroud)

sqlite xamarin sqlite-net

5
推荐指数
2
解决办法
3067
查看次数

Xamarin错误System.DllNotFoundException:/system/lib/libsqlite.so在Android 7.0上

每当我尝试在android 7.0中创建一个SQLite.Net.SQLiteConnection时,我会得到这个异常,任何想法如何修复它?我正在使用这些nuget pacakges:

<packages>
  <package id="ExifLib.PCL" version="1.0.1" targetFramework="monoandroid6" />
  <package id="Microsoft.Bcl" version="1.1.10" targetFramework="monoandroid43" />
  <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="monoandroid43" />
  <package id="Newtonsoft.Json" version="7.0.1" targetFramework="monoandroid6" />
  <package id="SQLite.Net.Core-PCL" version="3.1.1" targetFramework="monoandroid6" />
  <package id="SQLite.Net-PCL" version="3.1.1" targetFramework="monoandroid6" />
  <package id="SQLiteNetExtensions" version="1.3.0" targetFramework="xamarinios1" />
  <package id="sqlite-net-pcl" version="1.2.1" targetFramework="monoandroid70" />
  <package id="SQLitePCL.bundle_green" version="0.9.3" targetFramework="monoandroid60" />
  <package id="SQLitePCL.plugin.sqlite3.android" version="0.9.3" targetFramework="monoandroid60" />
  <package id="SQLitePCL.raw" version="0.9.3" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.bundle_green" version="1.1.1" targetFramework="monoandroid70" />
  <package id="SQLitePCLRaw.core" version="1.1.1" targetFramework="monoandroid70" />
  <package id="SQLitePCLRaw.lib.e_sqlite3.android" version="1.1.1" targetFramework="monoandroid70" />
  <package id="SQLitePCLRaw.provider.e_sqlite3.android" version="1.1.1" targetFramework="monoandroid70" />
  <package …
Run Code Online (Sandbox Code Playgroud)

xamarin.android xamarin sqlite-net xamarin.forms android-7.0-nougat

5
推荐指数
1
解决办法
5889
查看次数

关闭 SQLiteAsyncConnection

我在我的 Xamarin Android 项目中使用 sqlite-net-pcl 库(Frank Krueger 的项目,而不是\xc3\x98ystein Krog 的这个 fork)。根据作者的说法,到目前为止,SQLiteAsyncConnection 似乎没有 Close 或 Dispose 方法

\n\n

我有两个问题。首先,使用连接作为单例会节省资源吗?其次,我可以使用 sqliteAsyncConnection.GetConnection().Close() 关闭连接吗?

\n\n

我计划做类似的事情:

\n\n
public static async Task CloseDbConnectionAsync(SQLiteAsyncConnection dbConnection)\n{\n    await Task.Factory.StartNew(() => dbConnection.GetConnection().Close());\n}\n
Run Code Online (Sandbox Code Playgroud)\n

c# sqlite android xamarin sqlite-net

5
推荐指数
1
解决办法
4508
查看次数