powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Обновление OleDB
9 сообщений из 9, страница 1 из 1
Обновление OleDB
    #34904376
kinolog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Совсем недавно стал изучать ADO.NET, и никак не могу разобраться как обновлять данные в бд. Помогите разобраться. Заранее спасибо!

Вообщем у меня есть таблица 'Задания', Состоящее и з 8 полей. Основные 'ID' и 'Имя'.
именно эти поля мне нужно изменить.

Вот процедура создания команд:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 
Private Sub CreateCommands()        
        Dim TI As Int32 = ComboTables.SelectedIndex
        Dim cmUpdate As OleDb.OleDbCommand
        Dim cmDelete As OleDb.OleDbCommand
        Dim cmInsert As OleDb.OleDbCommand

        cmUpdate = New OleDb.OleDbCommand( _
            "UPDATE " & ComboTables.Items(TI) & " SET ID = ?, Имя = ? " & _
            "WHERE ID = ?")
        cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@ID", OleDb.OleDbType.Integer,  10 , "ID"))
        cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@Имя", OleDb.OleDbType.VarChar,  50 , "Имя"))
        cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@oldID", OleDb.OleDbType.Integer,  10 , "ID")).SourceVersion = DataRowVersion.Original

        cmDelete = New OleDb.OleDbCommand( _
            "DELETE FROM " & ComboTables.Items(TI) & " WHERE ID = ?")
        cmDelete.Parameters.Add(New OleDb.OleDbParameter("@ID", OleDb.OleDbType.Integer,  10 , "ID")).SourceVersion = DataRowVersion.Original

        cmInsert = New OleDb.OleDbCommand( _
            "INSERT INTO " & ComboTables.Items(TI) & " (ID, Имя) VALUES (?, ?)")
        cmInsert.Parameters.Add(New OleDb.OleDbParameter("@ID", OleDb.OleDbType.Integer,  10 , "ID"))
        cmInsert.Parameters.Add(New OleDb.OleDbParameter("@Имя", OleDb.OleDbType.VarChar,  50 , "Имя"))
        dbAdapter.UpdateCommand = cmUpdate
        dbAdapter.DeleteCommand = cmDelete
        dbAdapter.InsertCommand = cmInsert
End Sub

Далее процедура обновления.

Код: plaintext
1.
2.
3.
4.
            datas.Tables(TI).Rows(SelectOrder).Item( 2 ) = "Мое значение" ' изменение поля Имя
            dbAdapter.Update(datas)
            datas.AcceptChanges()
            dbCon.Close()

Update выбивает ошибку:

Update requires the UpdateCommand to have a connection object. The Connection property of the UpdateCommand has not been initialized.
...
Рейтинг: 0 / 0
Обновление OleDB
    #34904543
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы тест ошибки сами читали?

коннекшины у команд за вас кто будет инициализировать?
...
Рейтинг: 0 / 0
Обновление OleDB
    #34907846
kinolog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! С этим разобрался.

Однако возник еще один вопрос:
Можно ли узнать тип необходимого поля (OleDbType) а также его размер.
Если да то как?
...
Рейтинг: 0 / 0
Обновление OleDB
    #34907882
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinologСпасибо! С этим разобрался.

Однако возник еще один вопрос:
Можно ли узнать тип необходимого поля (OleDbType) а также его размер.
Если да то как?
у кого узнать и кому необходимому?
...
Рейтинг: 0 / 0
Обновление OleDB
    #34907938
kinolog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поясню подробнее:
Я хочу создать класс работы с базой данных через OleDb.
Класс должен осуществлять чтение и запись данных в БД.
Чтение данных я уже сделал. А как осуществить запись я не знаю.
Ведь для записи необходио знать имя поля его тип и размер,
для того чтобы затем создать параметры командам UpdateCommand, InsertCommand и DeleteCommand.
База заведомо не известна.

Поетому я и спрашиваю можно ли узнать тип и размер поля.
Причем тип - OleDbType.
...
Рейтинг: 0 / 0
Обновление OleDB
    #34907974
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторБаза заведомо не известна
и структура, как я понимаю - тоже?
автор Совсем недавно стал изучать ADO.NET
... и давай сразу строчить вечное, доброе (читай - универсальное), да?

что не получается после чтения?
...
Рейтинг: 0 / 0
Обновление OleDB
    #34908043
kinolog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтение у меня получилось. А запись данных не совсем.
И как раз таки структуру бд я смог получить. Но это мне не помогло, т.к. там не было не типов полей, не их размеров.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
cmUpdate = New OleDb.OleDbCommand( _
            "UPDATE Таблица1 SET Номер = ?, Имя = ?, " + _
            "Описание = ? WHERE ID = ?", dbCon)

cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@Номер", OleDb.OleDbType.Integer,  5 , "Номер"))
cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@Имя", OleDb.OleDbType.VarChar,  50 , "Имя"))
cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@Описание", OleDb.OleDbType.LongVarChar,  1000 , "Описание"))

cmUpdate.Parameters.Add(New OleDb.OleDbParameter("@oldID", OleDb.OleDbType.Integer,  5 , "ID")).SourceVersion = DataRowVersion.Original

dbAdapter.UpdateCommand = cmUpdate
...
Рейтинг: 0 / 0
Обновление OleDB
    #34908112
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ как раз таки структуру бд я смог получить. Но это мне не помогло, т.к. там не было не типов полей, не их размеров.

не знаю, что и как и где вы получали....
но описания полей можно пполучит из полученной DataTable, например...
table.Columns(0).DataType, table.Columns(0).MaxLength
и т.д.
...
Рейтинг: 0 / 0
Обновление OleDB
    #34908122
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ я на вашем месте почитал бы о методе GetSchema OleDbConnection
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Обновление OleDB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]