繁体   English   中英

检查SQLite上的表是否为空

[英]Check if a table is empty on SQLite

我正在尝试使VB.NET适应这篇文章中投票最多的答案的代码:

Sqlite检查表是否为空

原始代码是

SQLiteDatabase db = table.getWritableDatabase();
String count = "SELECT count(*) FROM table";
Cursor mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int icount = mcursor.getInt(0);
if(icount>0)
//leave 
else
//populate table

我的代码看起来像(“仅在屏幕上显示一条消息,稍后我将填写If-Else代码”)

Using conn As New SQLiteConnection("Data Source=myDataBase.sqlite;Version=3;foreign keys=true")

Try
    conn.Open()
    Dim emptyUserTable = "SELECT COUNT(*) FROM usersTable"
    Dim cmdIsEmpty As SQLiteCommand = New SQLiteCommand(emptyUserTable, conn)

    Try
        Dim Answer As Integer
        Answer = cmdIsEmpty.ExecuteNonQuery()
        MsgBox(Answer)
    Catch ex As Exception
        MsgBox(ex.ToString())
    End Try

End Using

但是“答案”始终为-1,是否有空表。

我不知道如何使用getWritableDataBase,因为我得到的getWritableDatabase不是SQLiteConnection的成员

与rawQuery相同。

如何在VB.NET上检查usersTable是否为空?

我对您的代码进行了一些抽象,以便可以将其用于任何表:

Private Function IsTableEmpty(tblName As String) As Boolean
    Dim sql = String.Format("SELECT COUNT(*) FROM {0}", tblName)

    Using conn As New SQLiteConnection(LiteConnStr)
        Using cmd As New SQLiteCommand(sql, conn)

            conn.Open()

            Dim rows = Convert.ToInt32(cmd.ExecuteScalar())
            Return rows = 0
        End Using
    End Using
End Function

用法:

If IsTableEmpty("usersTable") Then
    Console.Beep()
End If

笔记

  • 使用完命令对象后,应将其丢弃,因此可在“使用”块上使用它。
  • 无需到处复制连接字符串。 您可以一次将其定义为表单/类级别的变量,并在任何地方重用
  • ExecuteScalar()返回计数,然后测试0行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM