首页 > 解决方案 > 检查数据库表是否包含任何行

问题描述

我正在将数据加载到具有 3 个Entry控件的表单中。

我为此使用的对象称为mySettings,它是SystemSettings我的数据库中的一个类和数据库表的对象SQLite

到目前为止,我有这段代码,它按原样工作。

var db = new SQLiteConnection(dbPath);

Entry txtServer;
txtServer = new Entry { FontSize = 10 };
controlGrid.Children.Add(txtServer, 2, 0);
Grid.SetColumnSpan(txtServer, 4);

SystemSettings mySettings;
mySettings = db.Get<SystemSettings>(0);
txtServer.Text = mySettings.FTPServer;

但是,在加载值之前,我需要检查SystemSettings表中是否包含任何行。

我在网上看过一些指南。

有人说使用类似的东西

SQLiteCommand cmd;
cmd = new SQLiteCommand(db);

...

int result = Convert.ToInt32(db.ExecuteScalar)

但是,我收到一个错误说

SQLiteCommand 不包含任何包含 x 参数的方法

无论我传入多少(0个或更多)。

似乎也没有一种方法作为db.

SystemSettings那么在尝试使用不存在的数据之前,如何检查是否包含任何行?

标签: c#sqlitexamarin

解决方案


下面的模式应该可以工作。.ExecuteScalar() 方法实际上是在命令而不是连接上。

    int count;
    using (SQLiteConnection db = new SQLiteConnection("MY_CXN_STRING"))
    using (SQLiteCommand cmd = new SQLiteCommand("SELECT COUNT(*) FROM SystemSettings"))
    {
        db.Open();
        count = (int)cmd.ExecuteScalar();
        db.Close();
    }
bool hasRows = count != 0;

推荐阅读