[英]Check if a table is empty on SQLite
我正在尝试使VB.NET适应这篇文章中投票最多的答案的代码:
原始代码是
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.