如何获取表中的记录数?

时间:2014-03-05 15:39:18

标签: vb.net

有人帮助我 我正在处理我们的项目,我需要检查我的数据库是否已有20条记录。 如果是这样,那么它将不再接受记录。 我一直在尝试以下代码:

Public Class Form1

Dim con As New OleDb.OleDbConnection
Dim ds, ds2 As New DataSet
Dim da, da2 As OleDb.OleDbDataAdapter
Dim sql, sql1 As String
Dim int As Integer

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    con.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0; data source = |datadirectory|\Database6.mdb"
    con.Open()
    Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT * FROM Accounts WHERE Username='" & TextBox1.Text & "'", con)
    Dim sdr As OleDb.OleDbDataReader = cmd.ExecuteReader
    Dim cmd1 As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT * FROM Accounts")
    sql = "INSERT INTO Accounts ([Username], [Password], [FirstName], [LastName]) VALUES ('" & TextBox1.Text & "','" & TextBox2.Text & "', '" & TextBox3.Text & "','" & TextBox4.Text & "') "
    sql1 = "SELECT Count([AccountID]) FROM Accounts"

    cmd = New OleDb.OleDbCommand(sql, con)
    cmd1 = New OleDb.OleDbCommand(sql1, con)
    Convert.ToInt32(sql1)
    cmd1.ExecuteScalar()
    If sql1 < 20 Then
        MsgBox("Cannot accept records")
    ElseIf sdr.HasRows = False Then
        cmd.ExecuteNonQuery()
        MsgBox("Account Added")
    ElseIf sdr.HasRows = True Then
        MsgBox("Username is taken")
    End If


    con.Close()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Me.Hide()
    Form2.Show()
End Sub
End Class

但转换代码会触发错误:

  

输入字符串的格式不正确

但是,如果我删除转换代码,它会给我错误

  

从字符串转换“SELECT Count([AccountID])FROM A”到type'Double'无效。“

请帮帮我 TIA

1 个答案:

答案 0 :(得分:1)

我不太了解VB,这是我的头脑。您试图转换您的SQL文本,这将永远不会工作。尝试这样的事情:

dim result as object
result = cmd1.ExecuteScalar()
dim count as int
count = Convert.ToInt32(result)
If count < 20 Then