БД с ADO.Net, помогите разобраться...

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

БД с ADO.Net, помогите разобраться...

Сообщение WitC » 04.07.2008 (Пт) 10:36

Доброго времени!!!
Очередная проблема в освоении .NET технологий. Создаю приложение БД, подключил базу, через DataAdapter вытащил таблицу, добавил в нее позицию, передал изменения в БД и вышел... Все отработало, вроде бы, точно сказать не могу, потому что сам не до конца понимаю... но позиция добавляется...
Вопрос в следующем.... обязательно каждый раз декларировать структуру таблицы для команд Insert, Update, Delete??? Это очень неудобно по сравнению с "бывшим ADO". Согласен, что скорость общения с БД увеличиться, но если у меня 100 таблиц??? Как можно оптимизировать код работы с БД в новой технологии???
Код: Выделить всё
Public daDB As OleDbDataAdapter, objTable As New DataTable(), objRow As DataRow, objSet As New DataSet(), strObj As Object

dim masFileRead as string ="Provider=SQLOLEDB;Data Source=СЕРВЕР;Initial Catalog=БАЗА ДАННЫХ;Integrated Security=SSPI;Connect Tirneout=120;OLEDB Services=-4;"

daDB = New OleDbDataAdapter("select * from dbo.tbl_Z_managers", masFileRead)
daDB.Fill(objTable)
objTable.Rows.Add(New Object() {Nothing, "erve", "ferfer", "ege4ger", "gervearg", 1})
Form1.DataGridView1.DataSource = objTable
daDB.InsertCommand = CreateDataAdapterlnsertCommand()
daDB.Update(objTable)

'вот тут описание таблицы на вставку... неужеле для каждой таблицы такое делать????
Private Function CreateDataAdapterlnsertCommand() As OleDbCommand
        Dim cn As New OleDbConnection(masFileRead(1))
        Dim strSQL As String

        strSQL = "INSERT INTO dbo.tbl_Z_managers (m_Name, m_Phone, m_Comment, m_PWD, is_Valid) VALUES (?, ?, ?, ?, ?)"
        Dim cmd As New OleDbCommand(strSQL, cn)
        Dim pc As OleDbParameterCollection = cmd.Parameters

        pc.Add("m_Name", OleDbType.VarChar, 0, "m_Name")
        pc.Add("m_Phone", OleDbType.VarChar, 0, "m_Phone")
        pc.Add("m_Comment", OleDbType.VarChar, 0, "m_Comment")
        pc.Add("m_PWD", OleDbType.VarChar, 0, "m_PWD")
        pc.Add("is_Valid", OleDbType.Integer, 0, "is_Valid")

        Return cmd
    End Function

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Re: БД с ADO.Net, помогите разобраться...

Сообщение Emzari » 20.10.2008 (Пн) 17:46

вот как я сам это делаю с базами access

Код: Выделить всё
   Imports System.Data
   Imports System.Data.OleDb


   Private Sub cbAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbAdd.Click

        Dim myBuilder As New OleDbConnectionStringBuilder
        myBuilder("Data Source") = "Путь ктвоей базе данных"
        myBuilder.Add("Provider", "Microsoft.Jet.Oledb.4.0")

        Dim strSaxeli, strGvari, strTanamdeboba, strMisamarti As String
        Dim strTelefoni, strMobiluri As String
        Dim DabTarigi As Date

        strSaxeli = RTrim(LTrim(txtSaxeli.Text))
        strGvari = RTrim(LTrim(txtGvari.Text))
        strTanamdeboba = RTrim(LTrim(txtTanamdeboba.Text))
        strMisamarti = RTrim(LTrim(txtMisamarti.Text))
        strTelefoni = RTrim(LTrim(txtTelefoni.Text))
        strMobiluri = RTrim(LTrim(txtMobiluri.Text))
        DabTarigi = dtpDabTarigi.Value.Date

        Dim myCon As New OleDbConnection(myBuilder.ConnectionString)
        Try
            myCon.Open()
            Dim myCommand As OleDbCommand = myCon.CreateCommand()
            Dim strSQL As String
            strSQL = "INSERT INTO Tanamshromlebi (Saxeli, Gvari, DabTarigi, Misamarti, Tanamdeboba, Tel, Mob) " & _
                         "VALUES (@Saxeli, @Gvari, @DabTarigi, @Misamarti, @Tanamdeboba, @Tel, @Mob)"
            Dim cmdInsert As New OleDbCommand(strSQL, myCon)
            cmdInsert.Parameters.AddWithValue("@Saxeli", strSaxeli)
            cmdInsert.Parameters.AddWithValue("@Gvari", strGvari)
            cmdInsert.Parameters.AddWithValue("@DabTarigi", DabTarigi)
            cmdInsert.Parameters.AddWithValue("@Misamarti", strMisamarti)
            cmdInsert.Parameters.AddWithValue("@Tanamdeboba", strTanamdeboba)
            cmdInsert.Parameters.AddWithValue("@Tel", strTelefoni)
            cmdInsert.Parameters.AddWithValue("@Mob", strMobiluri)

            cmdInsert.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox("Ошибка!" & vbLf & ex.Message,  MsgBoxStyle.Critical)
        Finally
            myCon.Close()
        End Try
    End Sub


можно организовать функцию и передавать в него нужные значения

WitC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.06.2008 (Чт) 16:45

Re: БД с ADO.Net, помогите разобраться...

Сообщение WitC » 21.10.2008 (Вт) 10:36

Comand не использовал... может и зря... В любом случае - спасибо за ответ!!!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: БД с ADO.Net, помогите разобраться...

Сообщение Sebas » 21.10.2008 (Вт) 11:58

Public NotInheritable Class OleDbCommandBuilder
Inherits System.Data.Common.DbCommandBuilder
Member of: System.Data.OleDb
Summary:
Automatically generates single-table commands that are used to reconcile changes made to a System.Data.DataSet with the associated database. This class cannot be inherited.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList