Windows 10 个通用应用 SQLite
Windows 10 Universal App SQLite
我目前正在尝试将工作中的 Windows 8 JavaScript 应用程序移植到 Windows 10 UAP 应用程序。在我的 Windows 8 应用程序中,我大量使用了这个 SQLite 包装器和库:https://github.com/doo/SQLite3-WinRT。但是,在按照存储库自述文件中的设置说明将 SQLite3-WinRT 添加到我的 Windows 10 UAP 应用程序后,我收到来自我的 SQLite3.js 源文件的 "WinJS is not defined" 错误添加到应用程序中我的 /js 目录(它在 windows 8 应用程序中工作正常的方式)。我在这里做错了什么,或者这个 SQLite3-WinRT 不能与 Win 10 UAP 一起工作,有没有更好的方法在 JavaScript Windows 10 UAP 应用程序中使用 SQLite?非常感谢!
我尝试在 Windows 10 上使用 https://github.com/doo/SQLite3-WinRT,发现 VS2015 Community Edition 甚至无法加载项目。每次我尝试加载它时,VS 都会挂起并在状态栏中显示 "unloading project"。通过任务管理器杀死它是唯一的出路。
我发现 this sample app 在通用应用程序中实现了 SQLite。这对我来说在 Windows 10 上编译和运行良好,尽管我确实必须使用我拥有的版本 SQLite 3.8.11.1
更新对 SQLite 3.8.4.3 的引用
- 下载并解压Universal JavaScript SQLite Sample
- 在 Visual Studio
中打开
- 点击"Shared App"项目组
- 展开"SQLite.Windows" > "References"
- 删除对“SQLite.WinRT81,版本=3.8.4.3
的引用
- 右击 > "Add Reference"
- 来自 Windows 8.1 > 扩展,select“用于 Windows 运行时的 SQLite (Windows 8.1)
- 展开"SQLite.WindowsPhone" > "References"
- 删除对“SQLite.WP81,版本=3.8.5
的引用
- 右击 > "Add Reference"
- 来自 Windows 8.1 > 扩展,select“用于 Windows 运行时的 SQLite (Windows 8.1)
- 编译
如果您正在寻找一步一步的过程,您可以看看这个 post。
您可以将其用于:
- Windows 10:用于通用应用程序平台的 SQLite
- Windows Phone 8.1:用于 Windows Phone 8.1
的 SQLite
- Windows 8.1:用于 Windows 运行时的 SQLite (Windows 8.1)
设置包和扩展后,您可以使用以下方法创建数据库和模型类:
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);
}
}
}
我目前正在尝试将工作中的 Windows 8 JavaScript 应用程序移植到 Windows 10 UAP 应用程序。在我的 Windows 8 应用程序中,我大量使用了这个 SQLite 包装器和库:https://github.com/doo/SQLite3-WinRT。但是,在按照存储库自述文件中的设置说明将 SQLite3-WinRT 添加到我的 Windows 10 UAP 应用程序后,我收到来自我的 SQLite3.js 源文件的 "WinJS is not defined" 错误添加到应用程序中我的 /js 目录(它在 windows 8 应用程序中工作正常的方式)。我在这里做错了什么,或者这个 SQLite3-WinRT 不能与 Win 10 UAP 一起工作,有没有更好的方法在 JavaScript Windows 10 UAP 应用程序中使用 SQLite?非常感谢!
我尝试在 Windows 10 上使用 https://github.com/doo/SQLite3-WinRT,发现 VS2015 Community Edition 甚至无法加载项目。每次我尝试加载它时,VS 都会挂起并在状态栏中显示 "unloading project"。通过任务管理器杀死它是唯一的出路。
我发现 this sample app 在通用应用程序中实现了 SQLite。这对我来说在 Windows 10 上编译和运行良好,尽管我确实必须使用我拥有的版本 SQLite 3.8.11.1
更新对 SQLite 3.8.4.3 的引用- 下载并解压Universal JavaScript SQLite Sample
- 在 Visual Studio 中打开
- 点击"Shared App"项目组
- 展开"SQLite.Windows" > "References"
- 删除对“SQLite.WinRT81,版本=3.8.4.3 的引用
- 右击 > "Add Reference"
- 来自 Windows 8.1 > 扩展,select“用于 Windows 运行时的 SQLite (Windows 8.1)
- 展开"SQLite.WindowsPhone" > "References"
- 删除对“SQLite.WP81,版本=3.8.5 的引用
- 右击 > "Add Reference"
- 来自 Windows 8.1 > 扩展,select“用于 Windows 运行时的 SQLite (Windows 8.1)
- 编译
如果您正在寻找一步一步的过程,您可以看看这个 post。
您可以将其用于:
- Windows 10:用于通用应用程序平台的 SQLite
- Windows Phone 8.1:用于 Windows Phone 8.1 的 SQLite
- Windows 8.1:用于 Windows 运行时的 SQLite (Windows 8.1)
设置包和扩展后,您可以使用以下方法创建数据库和模型类:
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);
}
}
}