我目前正在为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)
我不确定我在这里缺少什么,但它必须是简单而明显的东西.
嗨,我有一个问题,使用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类型.
我正在尝试在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'.
我怎样才能使这个工作?
我目前正在制作一个需要存储和从sqlite数据库获取数据的应用程序.我正在使用的两个Nuget包是Sqlite PCL和SQLite-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.
有谁知道如何解决这一问题?
第一次使用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
我正在使用SQLite-net和TwinCoders NuGet来实现MvvmCross Xamarin项目中的扩展方法.我想让数据库保持更新,即使我将来会修改模型.
我的问题是:如果我使用CreateTable函数创建一个基于模型的SQLite表,并且平板电脑/手机上已存在数据库,但它有不同的结构(假设表中有一个缺少的列,已添加到最后更新),这个函数会改变现有的表吗?谢谢!
我在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列.
我们在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) 每当我尝试在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
我在我的 Xamarin Android 项目中使用 sqlite-net-pcl 库(Frank Krueger 的项目,而不是\xc3\x98ystein Krog 的这个 fork)。根据作者的说法,到目前为止,SQLiteAsyncConnection 似乎没有 Close 或 Dispose 方法。
\n\n我有两个问题。首先,使用连接作为单例会节省资源吗?其次,我可以使用 sqliteAsyncConnection.GetConnection().Close() 关闭连接吗?
\n\n我计划做类似的事情:
\n\npublic static async Task CloseDbConnectionAsync(SQLiteAsyncConnection dbConnection)\n{\n await Task.Factory.StartNew(() => dbConnection.GetConnection().Close());\n}\nRun Code Online (Sandbox Code Playgroud)\n