我目前正在尝试将正常运行的Windows 8 JavaScript应用程序移植到Windows 10 UAP应用程序中。在我的Windows 8应用程序中,我大量使用了这个SQLite包装器和库:https://github.com/doo/SQLite3-WinRT。但是,根据repo自述文件中的设置说明将SQLite3-WinRT添加到我的Windows 10 UAP应用程序后,我得到了一个" WinJS未定义"来自我添加到应用程序中的/ js目录的SQLite3.js源文件中的错误(它在windows 8应用程序中正常工作的方式)。我在这里做错了什么,或者这个SQLite3-WinRT无法与Win 10 UAP一起使用,是否有更好的方法在JavaScript Windows 10 UAP应用程序中使用SQLite?非常感谢!
答案 0 :(得分:4)
我尝试在Windows 10上使用https://github.com/doo/SQLite3-WinRT,发现VS2015 Community Edition甚至无法加载项目。每当我尝试加载它时,VS都会挂起"卸载项目"显示在状态栏中。通过任务管理器杀死它是唯一的出路。
我发现this sample app在通用应用程序中实现了SQLite。这在Windows 10上为我编译并运行正常,尽管我必须使用我的版本更新对SQLite 3.8.4.3的引用,SQLite 3.8.11.1
答案 1 :(得分:0)
如果您正在寻找一步一步的程序,可以查看此post。
您可以将其用于:
设置包和扩展后,您可以使用以下命令创建数据库和模型类:
using System.IO;
using System.Threading.Tasks;
using SQLiteModernApp.DataModel;
using SQLite.Net.Async;
using System;
using SQLite.Net;
using SQLite.Net.Platform.WinRT;
namespace SQLiteModernApp.DataAccess
{
public class DbConnection : IDbConnection
{
string dbPath;
SQLiteAsyncConnection conn;
public DbConnection()
{
dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Sample.sqlite");
var connectionFactory = new Func<SQLiteConnectionWithLock>(() => new SQLiteConnectionWithLock(new SQLitePlatformWinRT(), new SQLiteConnectionString(dbPath, storeDateTimeAsTicks: false)));
conn = new SQLiteAsyncConnection(connectionFactory);
}
public async Task InitializeDatabase()
{
await conn.CreateTableAsync<Department>();
await conn.CreateTableAsync<Employee>();
await conn.CreateTableAsync<EmployeeDepartment>();
}
public SQLiteAsyncConnection GetAsyncConnection()
{
return conn;
}
}
}
现在您可以按照示例创建一个CRUD:
using System.Collections.Generic;
using System.Threading.Tasks;
using SQLite.Net.Async;
using SQLiteModernApp.DataAccess;
using SQLiteModernApp.DataModel;
using SQLiteNetExtensionsAsync.Extensions;
namespace SQLiteModernApp.Repository
{
public class EmployeeRepository : IEmployeeRepository
{
SQLiteAsyncConnection conn;
public EmployeeRepository(IDbConnection oIDbConnection)
{
conn = oIDbConnection.GetAsyncConnection();
}
public async Task InsertEmployeeAsync(Employee employee)
{
await conn.InsertOrReplaceWithChildrenAsync(employee);
}
public async Task UpdateEmployeeAsync(Employee employee)
{
await conn.UpdateWithChildrenAsync(employee);
}
public async Task DeleteEmployeeAsync(Employee employee)
{
await conn.DeleteAsync(employee);
}
public async Task<List<Employee>> SelectAllEmployeesAsync()
{
return await conn.GetAllWithChildrenAsync<Employee>();
}
public async Task<List<Employee>> SelectEmployeesAsync(string query)
{
return await conn.QueryAsync<Employee>(query);
}
}
}