Ich schreibe ein VBS-Programm, das mit einer SQLite-Datenbank interagiert, aber ich habe ein Problem, wenn ich wissen will, ob ein Datensatz existiert.Wissen, ob ein Datensatz existiert
Hier mein Code:
Dim objConn, objRecordSet, following, today, found, search_value, rst
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
'Database connection
objConn.Open("DRIVER=SQLite3 ODBC Driver;Database=C:\Users\Quentin\Downloads\Quentin-Classementhashtags.db")
following = "youyou"
today = "CURRENT_DATE"
'Search if a record exists
Set rst = objRecordSet.Open "SELECT Name FROM Test WHERE Name = " & "'" & _
following & "'" & ";", objConn, adOpenStatic, adLockOptimistic
If (rst.EOF) Then
search_value = 0
Else
search_value = 1
End If
objRecordSet.Close
'If the record doesn't exist, insert the value of the variable "following"
If search_value = 0 Then
objRecordSet.Open "INSERT INTO Test (Name, Joined) VALUES " & "('" & _
following & "', " & today & ");", objConn, adOpenStatic, adLockOptimistic
End If
objConn.Close
Meine INSERT-Abfrage funktioniert, wenn ich es ohne Bedingung testen.
aber ich habe ein Problem Linie:
Set rst = objRecordSet.Open "SELECT Name FROM Test WHERE Name = " & "'" & _
following & "'" & ";", objConn, adOpenStatic, adLockOptimistic
Ende der erwarteten Anweisung
ich tun, weil ich möchte das Ergebnis dieser Abfrage in einer Variablen erholen. Wenn der Datensatz existiert, passiert nichts (search_value = 1
). Andernfalls geben Sie den Wert der Variablen following
ein.
PS: The link which I used for SQL queries.
Dieser Artikel ist von 2008 und zeigt einige ziemlich schlechte Code-Praxis. Wenn Sie VBScript in etwas wie klassischem ASP verwenden, wo es dem Internet ausgesetzt ist, würde ich ernsthaft "ADODB.Command" anstelle von dies mit parametrisierten Abfragen verwenden. – Lankymart
Sicher, aber das funktioniert für mich so ... – leyh
Berühmte letzte Worte ... –