Javascript Windows 10通用应用程序SQLite
我目前正在尝试将一个正常工作的Windows8JavaScript应用程序移植到Windows10UAP应用程序。在我的Windows 8应用程序中,我大量使用了这个SQLite包装器和库:。但是,在按照repo自述文件中的安装说明将SQLite3 WinRT添加到我的Windows 10 UAP应用程序后,我从添加到应用程序中我的/js目录的SQLite3.js源文件中得到了一个“WinJS未定义”错误(在Windows 8应用程序中工作正常)。我是做错了什么,还是这个SQLite3 WinRT不能与Win 10 UAP一起工作,是否有更好的方法在JavaScript Windows 10 UAP应用程序中使用SQLite?非常感谢 我尝试在Windows 10上使用,发现VS2015社区版甚至无法加载该项目。每次我尝试加载它时,VS都会挂起,状态栏中显示“卸载项目”。通过任务管理器杀死它是唯一的出路 我在一个通用应用程序中找到了实现SQLite的方法。这对我来说在Windows 10上编译和运行都很好,尽管我确实需要用我的版本SQLite 3.8.11.1更新对SQLite 3.8.4.3的引用Javascript Windows 10通用应用程序SQLite,javascript,sqlite,windows-runtime,winjs,win-universal-app,Javascript,Sqlite,Windows Runtime,Winjs,Win Universal App,我目前正在尝试将一个正常工作的Windows8JavaScript应用程序移植到Windows10UAP应用程序。在我的Windows 8应用程序中,我大量使用了这个SQLite包装器和库:。但是,在按照repo自述文件中的安装说明将SQLite3 WinRT添加到我的Windows 10 UAP应用程序后,我从添加到应用程序中我的/js目录的SQLite3.js源文件中得到了一个“WinJS未定义”错误(在Windows 8应用程序中工作正常)。我是做错了什么,还是这个SQLite3 WinR
如果您正在寻找一个循序渐进的过程,您可以看看这个 您可以将其用于:
- Windows 10:SQLite用于通用应用程序平台
- Windows Phone 8.1:SQLite for Windows Phone 8.1
- Windows 8.1:SQLite for Windows运行时(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;
}
}
}
使用System.IO;
使用System.Threading.Tasks;
使用SQLiteModernApp.DataModel;
使用SQLite.Net.Async;
使用制度;
使用SQLite.Net;
使用SQLite.Net.Platform.WinRT;
命名空间SQLiteModernApp.DataAccess
{
公共类DbConnection:IDbConnection
{
字符串路径;
sqliteasyncConnectionconn;
公共数据库连接()
{
dbPath=Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path,“Sample.sqlite”);
var connectionFactory=new Func(()=>new-SQLiteConnectionWithLock(new-SQLitePlatformWinRT(),new-SQLiteConnectionString(dbPath,storeDateTimeAsTicks:false));
conn=新的SQLiteAsyncConnection(connectionFactory);
}
公共异步任务InitializeDatabase()
{
等待连接CreateTableAsync();
等待连接CreateTableAsync();
等待连接CreateTableAsync();
}
公共SQLiteAsyncConnection GetAsyncConnection()
{
返回连接;
}
}
}
现在,您可以按照以下示例创建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);
}
}
}
使用System.Collections.Generic;
使用System.Threading.Tasks;
使用SQLite.Net.Async;
使用SQLiteModernApp.DataAccess;
使用SQLiteModernApp.DataModel;
使用sqlitenetextensionasync.Extensions;
命名空间SQLiteModernApp.Repository
{
公共类EmployeeRepository:IEEmployeeRepository
{
sqliteasyncConnectionconn;
公共雇员安置所(IDB连接)
{
conn=oIDbConnection.GetAsyncConnection();
}
公共异步任务InsertEmployeeAsync(员工)
{
等待与ChildrenAsync(员工)的连接插入或更换;
}
公共异步任务UpdateEmployeeAsync(员工)
{
等待conn.UpdateWithChildrenAsync(员工);
}
公共异步任务DeleteEmployeeAsync(员工)
{
等待conn.DeleteAsync(员工);
}
公共异步任务SelectAllEmployeesAsync()
{
return wait conn.GetAllWithChildrenAsync();
}
公共异步任务SelectEmployeesAsync(字符串查询)
{
返回wait conn.querysync(查询);
}
}
}
我想知道现在的状态如何。看到这个一周前的评论:谢谢你的链接!我终于能够在Windows10通用应用程序中工作,因为WinJS未定义错误来自我在default.html文件中犯的另一个错误。我现在在部署到Windows10Mobile时遇到了一个问题,在此提出了一个新问题:非常感谢!我能够成功地将示例应用程序中的Universal 8.1组件移植到一个Universal Windows 10组件,该组件在我的本地设备上构建并运行,并在部署到Windows 10 Mobile时运行!但是,您知道我在哪里可以找到SQLite实现的文档(可用的javascript方法/类等)?谢谢我想没有。我只是偶然发现了它。我能找到的唯一附加信息是相关的博客帖子(链接在示例中)-是的,那篇博客帖子基本上向我解释了这一切。谢谢让我知道你是否会使用我的win10通用组件版本(非8.1通用),因为我可以将它放在GitHub上。@cloudcrypt如果你能将你的项目放在GitHub上,对像我这样的其他人会有帮助。我正在与类似的问题作斗争。谢谢。给你:希望它有用,享受吧!最初的问题是关于WindowsPhone上的Javascript的。这个代码是C#