ASPX VB.Net OleDb Вставить параметр в запрос - PullRequest
0 голосов
/ 01 июля 2018

Я впервые пишу в VB.Net для ASPX-страниц.

У меня проблема в том, что параметр не входит в запрос в строке для cmd.Parameters.Add.

Я получаю ошибку

Не указано значение для одного или нескольких обязательных параметров.

на линии

reader = cmd.ExecuteReader;

Я пытался:

  • Добавление PARAMETERS в верхней части запроса, как я показал;
  • Удаление и добавление [] вокруг параметра;
  • Изменение OleDbType.Integer на OleDbType.SmallInt или OleDbType.BigInt

Я знаю, что запрос работает, поскольку я могу поместить его в MS Access и запускать после добавления параметра. Но не тогда, когда я запускаю его в Visual Studio.

Dim reader As OleDbDataReader
Dim cmd As OleDbCommand
Dim SQL As String = "PARAMETERS [@ID] Long; " &
                    "SELECT tblField.FieldName, " &
                           "tblField.FieldCaption, " &
                           "tblField.FieldMinCharNum, " &
                           "tblField.FieldMaxCharNum, " &
                           "tblField.FieldDefault, " &
                           "tblField.FieldSection, " &
                           "tblField.FirstQuestion, " &
                           "tblField.FieldDescription, " &
                           "tblField.FieldRegEx " &
                     "FROM tblField " &
                     "WHERE tblField.FieldID = [@ID];"

cmd = New OleDbCommand(SQL, Connection.Connection)
cmd.Parameters.Add("[@ID]", OleDbType.Integer).Value = ID

reader = cmd.ExecuteReader

У меня есть обходной путь, чтобы заставить его работать, просто предварительно вставив параметр в строку SQL. Но я хочу сделать эту работу для других областей страницы, которые еще не написаны. Там, где пользовательские данные возвращаются в базу данных, поэтому входы очищаются.

Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

OLEDB не использует @ для определения параметров. Оно использует ? и распределяет параметры в том порядке, в котором они появляются в SQL, измените ваш код на ...

Dim reader As OleDbDataReader
Dim cmd As OleDbCommand
Dim SQL As String = "SELECT tblField.FieldName, " &
                           "tblField.FieldCaption, " &
                           "tblField.FieldMinCharNum, " &
                           "tblField.FieldMaxCharNum, " &
                           "tblField.FieldDefault, " &
                           "tblField.FieldSection, " &
                           "tblField.FirstQuestion, " &
                           "tblField.FieldDescription, " &
                           "tblField.FieldRegEx " &
                      "FROM tblField " &
                     "WHERE tblField.FieldID = ?"

cmd = New OleDbCommand(SQL, Connection.Connection)
cmd.Parameters.Add("?", OleDbType.Integer).Value = ID

reader = cmd.ExecuteReader
0 голосов
/ 02 июля 2018

Я не понимаю, почему при упоминании SQL вы извлекаете данные из SQL-запроса или собираетесь вставить данные в таблицу.

ваше использование Dim cmd As OleDbCommand означает использование для вставки входных значений в базу данных, как показано ниже в примере кода.

       query = "INSERT INTO ds.students (ID,NAME,PIC)" & _
       "VALUES (@ID,@NAME,@PIC);"
        Dim cmd As OracleCommand = New OracleCommand(query, con)
        cmd.Parameters.Add("@ID", Convert.ToInt32(TextBox1.Text))
        cmd.Parameters.Add("@NAME", Convert.ToString(TextBox2.Text))
        cmd.Parameters.Add("@PIC", arrImage)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()

Вы можете попробовать это также

Using cn As OracleConnection = New OracleConnection(connectionString)

    cn.Open()

    Using cmd As OracleCommand = New OracleCommand()

        Const sql As String = "Insert into test_table (val1, val2) values (:var1, :var2)"
        cmd.Connection = cn
        cmd.Parameters.Add(New OracleParameter("var1", TxtField1.Text))
        cmd.Parameters.Add(New OracleParameter("var2", TxtField2.Text))
        cmd.CommandText = sql
        cmd.ExecuteNonQuery()

    End Using

End Using

если вы хотите вставить значения в базу данных, измените код в соответствии с заданными образцами.

Надеюсь, это поможет вам.

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