Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Windows 10通用应用程序SQLite_Javascript_Sqlite_Windows Runtime_Winjs_Win Universal App - Fatal编程技术网

Javascript Windows 10通用应用程序SQLite

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

我目前正在尝试将一个正常工作的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的引用

  • 下载和解压
  • 在VisualStudio中打开
  • 点击“共享应用”项目组
  • 展开“SQLite.Windows”>“引用”
  • 删除对“SQLite.WinRT81,Version=3.8.4.3”的引用
  • 右键单击>“添加引用”
  • 从Windows 8.1>扩展中,选择“SQLite for Windows Runtime(Windows 8.1)”
  • 展开“SQLite.WindowsPhone”>“引用”
  • 删除对“SQLite.WP81,Version=3.8.5”的引用
  • 右键单击>“添加引用”
  • 从Windows 8.1>扩展中,选择“SQLite for Windows Runtime(Windows 8.1)”
  • 编撰

  • 如果您正在寻找一个循序渐进的过程,您可以看看这个

    您可以将其用于:

    • 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#