【发布时间】:2021-08-09 01:58:47
【问题描述】:
请帮忙。 我正在尝试学习 xamarin c-sharp。为此,我学到了足够多的基础知识,我有信心尝试制作一个简单的 SQLite Db 应用程序。
我正在使用 sqlite-net-pcl。我试过 Xamarin.Android 和 Xamarin.Forms。我已经在两台不同的 win10 计算机上运行了该应用程序。我已经在模拟器和手机上运行了该应用程序。所有的结果都是一样的。 . .所有返回的数据都是 0 或 null。
我有一个现有的 非空 db (textdb.db ):
我在网上搜索过,发现有几个人抱怨相同的结果,但我找不到解决方案。
我希望有人看到并告诉我出了什么问题。
结构: 表:测试表 ..................... id, INT, 主键 数据,BIGINT
数据 编号 = 1 数据 = 2 ....................
我的代码:
using System;
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Views;
using AndroidX.AppCompat.Widget;
using AndroidX.AppCompat.App;
using Google.Android.Material.FloatingActionButton;
using Google.Android.Material.Snackbar;
using Android.Widget;
using System.IO;
using SQLite;
using System.Linq;
namespace android_db_app
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
. . .
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
. . .
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
. . .
}
private void FabOnClick(object sender, EventArgs eventArgs)
{
. . .
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
. . .
}
public void Exit_Click(object sender, EventArgs e)
{
System.Environment.Exit(0);
}
public void Connect_Click(object sender, EventArgs e)
{
object o,o1;
string dbname = "test.db";
string s = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, @"DailyReminder/DB/" + dbname);
if (!File.Exists(s))
s = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, dbname);
SQLiteAsyncConnection dbConnection = new SQLiteAsyncConnection(s);//SQLiteConnection.Table
string sql = "SELECT * FROM testtable;";
string sql1 = "SELECT ID FROM testtable;";
o = dbConnection.Table<testtable>();
o1 = dbConnection.QueryAsync<int>(sql1,0);
}
}
public class testtable
{
public Int32 id;
public Int64 data;
}
}
对象中的所有结果都是值 0 而不是 1 和 2。
【问题讨论】:
-
首先,您在不使用等待的情况下进行异步数据库调用。其次,您应该真正使用库的 ORM 功能,而不是尝试编写原始 SQL 查询
标签: c# xamarin sqlite-net-pcl