none
Запрос с параметрами RRS feed

  • Вопрос

  • Добрый день.  Не получается выполнить запрос к базе данных с двумя входящими параметрамит. С одним получается, а с двумя никак. Вот отрывок кода.

    Dim cmd As New SqlCommand()
    
       Dim param1 As New SqlParameter("@RefClassID", SqlDbType.Int)
    
       Dim param2 As New SqlParameter("@Category", SqlDbType.NVarChar)
    
       cmd = cn.CreateCommand
    
       With cmd
    
        .CommandText = "sqlCategoryes"
    
        .CommandType = CommandType.StoredProcedure
    
        .CommandTimeout = 30
    
        .Connection = cn
    
        .Parameters.Add(param1)
    
        .Parameters.Add(param2)
    
       End With
    
    
    
       param1.Value = 86
    
       param2.Value = "EN"
    
    
    
       da.SelectCommand = cmd
    
       da.TableMappings.Add("Table", "Categoryes")
    
    
    
       da.Fill(dsCategoryes)
    
    
    Заранее спасибо.
    24 февраля 2011 г. 8:04

Ответы

  • Попробуйте так: (передаете нужные параметры и открытое sql подключение, в датагриде - получаете данные, должно работать)
      Private Sub GetData(ByVal id, ByVal category, ByRef sqlConnection)
        Dim cmd As SqlCommand = sqlConnection.CreateCommand()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "dbo.StoredProcedure1"
        cmd.Parameters.Add("@RefClassID", System.Data.SqlDbType.Int).Value = id
        cmd.Parameters.Add("@Category", System.Data.SqlDbType.NVarChar).Value = category
    
        ds.Clear() ' ds - DataSet
        da.SelectCommand = cmd ' da - SqlDataAdapter
        da.Fill(ds)
    
        DataGridView1.DataSource = ds.Tables(0)
      End Sub
    

    Для связи [mail]
    • Помечено в качестве ответа hochuznat 25 февраля 2011 г. 13:56
    25 февраля 2011 г. 13:04

Все ответы

  • Попробуйте выполнить следующий код:

        Dim sql As SqlConnection = New SqlConnection("ваше подключение к БД")
        sql.Open()
    
        Dim cmd As SqlCommand = sql.CreateCommand()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "имя хранимой процедуры"
        cmd.Parameters.Add("@RefClassID", System.Data.SqlDbType.Int).Value = 86
        cmd.Parameters.Add("@Category", System.Data.SqlDbType.NVarChar).Value = "EN"
    
        Dim da As SqlDataAdapter = New SqlDataAdapter()
        da.SelectCommand = cmd
    
        Dim ds As DataSet = New DataSet()
    
        da.Fill(ds)
    
        MessageBox.Show(ds.Tables(0).Rows.Count.ToString())
    

    Если не получится - то скорее всего ошибка в хранимой процедуре. Тогда выложите ее, для поиска ошибки.

     


    Для связи [mail]
    25 февраля 2011 г. 12:21
  • Спасибо за ответ. Я нашел ответ на этот вопрос. Вы его для меня подтвердили. Странности начались дальше. Запрос выполняется один раз, т.е первый раз. В этом мне помогла  Ваша сторока

    MessageBox.Show(ds.Tables(0).Rows.Count.ToString())

    И все, при смене параметров запрос не работает. В гриде одни и теже данные с предыдущими параметрами.

    Это код у меня расположен в процедуре функции, откуда периодически надо получать данные.

     

    25 февраля 2011 г. 12:47
  • Попробуйте так: (передаете нужные параметры и открытое sql подключение, в датагриде - получаете данные, должно работать)
      Private Sub GetData(ByVal id, ByVal category, ByRef sqlConnection)
        Dim cmd As SqlCommand = sqlConnection.CreateCommand()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "dbo.StoredProcedure1"
        cmd.Parameters.Add("@RefClassID", System.Data.SqlDbType.Int).Value = id
        cmd.Parameters.Add("@Category", System.Data.SqlDbType.NVarChar).Value = category
    
        ds.Clear() ' ds - DataSet
        da.SelectCommand = cmd ' da - SqlDataAdapter
        da.Fill(ds)
    
        DataGridView1.DataSource = ds.Tables(0)
      End Sub
    

    Для связи [mail]
    • Помечено в качестве ответа hochuznat 25 февраля 2011 г. 13:56
    25 февраля 2011 г. 13:04
  • В моем случае ошибка была в использовании свойства

    da.TableMappings.Add(

     

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

    Спасибо за помощь.

    "Table", "OptionComplectSet")
    25 февраля 2011 г. 13:55