Используйте переменную для ввода в таблицу значений - PullRequest
0 голосов
/ 27 июля 2010

Я не могу использовать переменную в качестве таблицы для таблицы, хотя прямые значения сохраняются. Я получаю сообщение об ошибке "Синтаксическая ошибка в выражении INSERT INTO. Как мне преодолеть это?

sDBPAth = App.Path & "\SETMDBPATH.mdb"
sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=" & sDBPAth & ";" & _
                 "Jet OLEDB:Engine Type=4;"
                 ' Type=4 to create an Access97 mdb, If omitted Access2000 mdb

' ------------------------
' Create New ADOX Object
' ------------------------
 Set oDB = New ADOX.Catalog
 oDB.Create sConStr

 Set oCn = New ADODB.Connection
 oCn.ConnectionString = sConStr
 oCn.Open

 Set oCM = New ADODB.Command
 oCM.ActiveConnection = oCn
 oCM.CommandText = "CREATE TABLE MDBPATH(" & _
        "MDBPATH TEXT(40)      NOT NULL," & _
        "pass  TEXT(10))"
 oCM.Execute

' Populate the table.
 oCn.Execute "INSERT INTO MDBPATH VALUES (sDBPAth, 1,)" 'If 'sDBPath' is used the word sDBPath is stored not the variable value
'
' ------------------------
' Release / Destroy Objects
' ------------------------
 If Not oCM Is Nothing Then Set oCM = Nothing
 If Not oCn Is Nothing Then Set oCn = Nothing
 If Not oDB Is Nothing Then Set oDB = Nothing

 End Sub

Ответы [ 4 ]

2 голосов
/ 27 июля 2010

Попробуйте

' Populate the table.
 oCn.Execute "INSERT INTO MDBPATH VALUES ('" & sDBPAth & "', 1)"

В конце у вас была лишняя запятая, и вам нужно передать переменную за пределы строки.

В этом случае вы относительно экономитевы не передаете пользовательский ввод, но если вы продолжите создавать операторы INSERT, как описано выше, вы будете уязвимы для атак SQL-инъекций.

1 голос
/ 27 июля 2010

Вам нужно изменить свой оператор SQL, чтобы приложение могло заменить значение sDBPath

' Populate the table. 
 oCn.Execute "INSERT INTO MDBPATH VALUES ('" & sDBPAth & "', 1)"
1 голос
/ 27 июля 2010

Вам необходимо вызвать переменную вне строки.

oCn.Execute "INSERT INTO MDBPATH VALUES ('" & sDBPAth & "', 1)"
0 голосов
/ 27 июля 2010

Если sDBPAth - фактическая переменная VB, вам нужно использовать что-то вроде:

oCn.Execute "INSERT INTO MDBPATH VALUES ('" & sDBPAth & "', '1')"

, чтобы оператор insert создавался из значения переменнойвместо фиксированной строки.

Кроме того, в вашем утверждении, похоже, есть лишняя запятая, и вам могут понадобиться кавычки вокруг обоих значений, поскольку они оба типа text.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...