2014-03-05 62 views
0

有人幫我 我正在處理我們的項目,我需要檢查我的數據庫是否有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])F ROM A「鍵入'Double'無效。」

請幫助我。
TIA

+0

嘗試在您的文本框中輸入:''; drop Database6;'/ kidding,do not that that!但我強烈建議閱讀關於SQL注入http://en.wikipedia.org/wiki/SQL_injectionattacks。 – mxmissile

+0

是的。我完全瞭解SQL注入。但這不是我們項目的重點。我們只需要顯示添加第20條記錄後,數據庫不能再接受記錄。你能幫我嗎? – Bampie

+2

第一塊幫助 - 這不是VBA。如果你正確地標記你的問題,你的機會將會提高。 –

回答

1

我不知道VB一切都好,這是來自我的頭頂。你試圖轉換你的SQL文本,這將永遠不會工作。嘗試這樣的:

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

將嘗試這一個。 – Bampie

+1

這工作!謝謝你,先生! – Bampie

+1

@Bampie:如果上面的答案有幫助,請不要忘記接受/ upvote。 – Neolisk