Как программно задать подключение?

Rebelint
Дата: 31.01.2010 09:05:05
Делаю DataSet, создаю там адаптеры, параметризованные таблицы ит тд. А теперь как программно задать им подключение? Поискал в проекте, нашел упоминание подключения только к дизайнере в тэгах
maxATC
Дата: 31.01.2010 11:32:24
Rebelint
Дата: 07.02.2010 18:23:31
maxATC
Rebelint,

работа с базами данных .NET


Спасибо конечно, но там ни слова нет по моей проблеме.

Выходил из положения таким образом
 TableAdapter1.Connection.ConnectionString = MyDataSource;

Проблема в том, что если я создаю в датасете скалярный запрос и добавляю туда еще несколько таких же, то connection самого запроса уже не на самом адаптере, а на тех запросах, и доступа к свойству connection из кода уже нет.

Должен быть какой то способ программно менять глобальный коннект, выбранный в дизайнере датасета. Но вот где его взять?
sews
Дата: 07.02.2010 20:48:43
Когда то нашел в Инете




Imports System
Imports System.IO
Imports System.Data
Imports System.Data.OleDb

Public Class DataBaseN

#Region "Поля"

    'здесь записываем переменные
    Private pr_Connection As New OleDbConnection

#End Region

#Region "Свойства"

    'здесь записываем свойства

#End Region

#Region "Методы"

#Region "Основа"

    Sub New()
        Try
            pr_Connection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=С:\Учет.mdb") ' здесь вставишь свое ????????????????????
            pr_Connection.Open()
        Catch ex As Exception
            Throw New Exception("Невозможно открыть соединение с базой данных Тестов." & vbNewLine & "Ошибка: " & ex.Message)
        End Try
    End Sub 'end

    Protected Friend Sub CloseConnection()
        pr_Connection.Close()
    End Sub

    Protected Friend Sub ValidConnection()
        'проверка подлючения
        If pr_Connection.State = ConnectionState.Closed Then
            Throw New Exception("Операция не может быть выполнена, т.к. соединение не открыто.")
        End If
        'здесь можно вписать проверки на что угодно
    End Sub

    Protected Friend Function ExecuteScalar(ByVal p_CommandText As String, ByVal p_Parameters() As Object) As Object

        ValidConnection()

        'создание команды и ее настройка
        Using d_Command As OleDbCommand = pr_Connection.CreateCommand

            'заполнение параметров команды
            If p_Parameters IsNot Nothing Then
                For Each d_Object As Object In p_Parameters
                    If d_Object IsNot Nothing Then
                        d_Command.Parameters.AddWithValue("", d_Object)
                    Else
                        d_Command.Parameters.AddWithValue("", DBNull.Value)
                    End If
                Next
            End If

            'заполнение текста SQL запроса
            d_Command.CommandText = p_CommandText

            'выполняем запрос и возвращаем первое значение SQL запроса
            Return d_Command.ExecuteScalar
        End Using
    End Function

    Protected Friend Function GetTable(ByVal p_CommandText As String, ByVal p_Parameters() As Object) As Object

        ValidConnection()
        ' On Error Resume Next
        'создание команды и ее настройка
        Using d_Command As OleDbCommand = pr_Connection.CreateCommand

            'заполнение параметров команды
            If p_Parameters IsNot Nothing Then
                For Each d_Object As Object In p_Parameters
                    If d_Object IsNot Nothing Then
                        d_Command.Parameters.AddWithValue("", d_Object)
                    Else
                        d_Command.Parameters.AddWithValue("", DBNull.Value)
                    End If
                Next
            End If

            'заполнение текста SQL запроса
            d_Command.CommandText = p_CommandText

            Using d_A As New OleDbDataAdapter(d_Command)
                Using d_Table As New DataTable
                    d_A.Fill(d_Table)

                    'возвращаем таблицу
                    Return d_Table
                End Using
            End Using
        End Using
    End Function

    Protected Friend Sub ExecuteNonQuery(ByVal p_CommandText As String, ByVal p_Parameters() As Object)

        ValidConnection()

        'создание команды и ее настройка
        Using d_Command As OleDbCommand = pr_Connection.CreateCommand

            'заполнение параметров команды
            If p_Parameters IsNot Nothing Then
                For Each d_Object As Object In p_Parameters
                    If d_Object IsNot Nothing Then
                        d_Command.Parameters.AddWithValue("", d_Object)
                    Else
                        d_Command.Parameters.AddWithValue("", DBNull.Value)
                    End If
                Next
            End If

            'заполнение текста SQL запроса
            d_Command.CommandText = p_CommandText

            'Даем команду на выполнение SQL запроса (без возвращения каких либо данны)
            d_Command.ExecuteNonQuery()
        End Using
    End Sub

    Protected Friend Function ExecuteReader(ByVal p_CommandText As String, ByVal p_Parameters() As Object) As OleDbDataReader

        ValidConnection()

        'создание команды и ее настройка
        Using d_Command As OleDbCommand = pr_Connection.CreateCommand

            'заполнение параметров команды
            If p_Parameters IsNot Nothing Then
                For Each d_Object As Object In p_Parameters
                    If d_Object IsNot Nothing Then
                        d_Command.Parameters.AddWithValue("", d_Object)
                    Else
                        d_Command.Parameters.AddWithValue("", DBNull.Value)
                    End If
                Next
            End If

            'заполнение текста SQL запроса
            d_Command.CommandText = p_CommandText

            'Выполняем запрос и возвращаем объект типа DataReader
            Return d_Command.ExecuteReader
        End Using
    End Function

#End Region

    'ну а здесь ваши методы

#End Region

End Class
Rebelint
Дата: 08.02.2010 19:42:06
Это по существу свой самописный класс, а у меня УЖЕ есть датасет и нужно просто указать куда ему и адаптерам подключаться. Бред какойто - в дизайнере можно, а программно нет.
Точнее если перебрать все адаптеры то каждому можно присвоить значение connection.connectionstring, но это не самый лучший способ, тем более что некоторые адаптеры создаются на время выполнения.