Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как добавить новую запись в таблицу? / 14 сообщений из 14, страница 1 из 1
23.03.2004, 09:24
    #32452356
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Вот код /VB.NET/

Imports System.Data.OleDb
Module Module1
Public conn As OleDbConnection
Public ds As DataSet
Public cmd As OleDbCommand
Public ad As OleDbDataAdapter
Public tbl As DataTable


Public Sub Connect()

conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\data.mdb")
conn.Open()
cmd = New OleDbCommand()
tbl = New DataTable()

cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select nomer,fio from rt"

'адаптер
ad = New OleDbDataAdapter()
ad.SelectCommand = cmd

ds = New DataSet()
ad.Fill(ds)
tbl = ds.Tables(0)

End Sub
End Module

Как добавить запись в таблицу rt?
...
Рейтинг: 0 / 0
23.03.2004, 09:45
    #32452396
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Добавим запись в tbl
Код: plaintext
1.
2.
3.
4.
5.
Dim dr As DataRow
dr =  tbl.NewRow()
dr( 0 ) = sampleNum
dr( 1 ) =  "sampleString" 
tbl.Rows.Add(dr)


или

Код: plaintext
1.
2.
3.
4.
5.
Dim dr As DataRow
dr =  tbl.NewRow()
dr( "field1" ) = sampleNum
dr( "field2" ) =  "sampleString" 
tbl.Rows.Add(dr)


А теперь скинем изменения в БД в rt в данном случае
Код: plaintext
1.
2.
ad.Update(ds) 
ds.AcceptChanges()
...
Рейтинг: 0 / 0
23.03.2004, 10:06
    #32452439
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Спасибо за помощь огромное!

Ругается вот на эту строку ad.Update(ds)

Dim dtr As DataRow
dtr = tbl.NewRow
dtr(0) = 99999
dtr(1) = "Пупкин"


tbl.Rows.Add(dtr)

ad.Update(ds)
ds.AcceptChanges()

MsgBox("OK")

Ругань:

An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll

Additional information: Update requires a valid InsertCommand when passed DataRow collection with new rows.
...
Рейтинг: 0 / 0
23.03.2004, 10:17
    #32452475
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Конечно будет ругаться ведь вы не задали DataAdapterу Insert комманду, также необходимо задать Delete, Update комманду. А метод Update просто смотрит какие изменения произошли в DataSet - и соответственно направляет изменившие строчки Insertу, Update у и Deleteу.

Соответственно надо создать комманды и передать DataAdapterу:
ad.InsertCommand, ad.DeleteCommand, ad.UpdateCommand
...
Рейтинг: 0 / 0
23.03.2004, 10:26
    #32452505
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Ага.

ad.InsertCommand = cmd

Ошибки теперь не дает , но запись не добавляет новую.
...
Рейтинг: 0 / 0
23.03.2004, 10:35
    #32452536
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
А в cmd который ты добавляешь в InsertCommand
в cmd.CommandText = "insert bla, bla , bla"
Insert Statement написал или нет или Select стоит :-) ?
...
Рейтинг: 0 / 0
23.03.2004, 10:49
    #32452579
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
На DAO/ADO было проще...


Чуть Чуть осталось.
Селект стоит.
Что указать в инсерте

cmd.text="insert ????"
ad.InsertCommand = cmd
...
Рейтинг: 0 / 0
23.03.2004, 11:05
    #32452616
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
2 sa
Последний рывок остался.
...
Рейтинг: 0 / 0
23.03.2004, 11:13
    #32452638
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim cmdInsert as SQLCommand = New SQLCommand()

cmdInsert.CommandText =  "INSERT INTO rt(nomer, fio) VALUES (@nomer, @fio)" 
cmdInsert.Parameters.Add(new SqlParameter( "@nomer" , SqlDbType.YourType, YourSize, 
 "nomer" ))
cmdInsert.Parameters.Add(new SqlParameter( "@fio" , SqlDbType.YourType, YourSize, 
 "fio" ))
ad.InsertCommand = cmdInsert



Только укажи свой YourType, свой YourSize

Если же хочешь попроще то используй мастер DataAdapter если у тебя VS.NET. Он тебе и Update и Delete и Select и Insert автоматом сделает.
...
Рейтинг: 0 / 0
23.03.2004, 11:33
    #32452695
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Есть , получилось. SA спасибо. Вот что у меня получилось.

Добавление записи в акесовскую базу (может и пригодиться кому нибудь)

Imports System.Data.OleDb

Module Module1
Public conn As OleDbConnection
Public ds As DataSet
Public cmd As OleDbCommand
Public ad As OleDbDataAdapter
Public tbl As DataTable


Public Sub Connect()
'соединение
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\data.mdb")
conn.Open()
'команда
cmd = New OleDbCommand()
tbl = New DataTable()

cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select nomer,fio from rt"

'адаптер
ad = New OleDbDataAdapter()
ad.SelectCommand = cmd


ds = New DataSet()
ad.Fill(ds) 'заполняем DataSet
tbl = ds.Tables(0)



End Sub
End Module


'добавление записи


Private Sub ButtonAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Add.Click

Dim dtr As DataRow

cmd.CommandText = "INSERT INTO rt(nomer, fio) VALUES (@nomer, @fio)"
cmd.Parameters.Add(New OleDbParameter("@nomer", OleDbType.Char, 5, "nomer"))
cmd.Parameters.Add(New OleDbParameter("@fio", OleDbType.Char, 15, "fio"))

ad.InsertCommand = cmd

dtr = tbl.NewRow
dtr("nomer") = "12345"
dtr("fio") = "Иванов"
tbl.Rows.Add(dtr)
ad.Update(ds)
ds.AcceptChanges()

MsgBox("OK")

End Sub

В общем то как то все запутано . Надо прописывать команды всякие , адаптеры. Гора всяких фишек ради простого действия. Все таки в DAO было как то получше , законнектился к базе, взял рекордсет и пихай туда что хочешь, а тут... АДО.НЕТ пока меня не радует.


Еще раз спасибо , правда хотелось бы сразу узнать как удалять запись и обновлять. Но это позже.
...
Рейтинг: 0 / 0
23.03.2004, 11:43
    #32452730
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
>В общем то как то все запутано . Надо прописывать команды всякие , адаптеры. Гора всяких фишек ради простого действия. Все таки в DAO было как то получше , законнектился к базе, взял рекордсет и пихай туда что хочешь, а тут... АДО.НЕТ пока меня не радует.

А потому что в ADO.NET основное -это концепция отсоединенного источника данных.
То есть можно данные из БД слить, закрыть соединение, ОТСОЕДИННЕНО обработать, и а потом через UPDATE передать все измения(вставить, удалить, изменить).

Если все кажется так запутанно то настраивай DataAdapter прямо из Visual Studio .NET, только все равно желательно посмотреть что дизайнер там творит.

Еще можно комманды генерировать автоматически но этот способ лично я пытаюсь всегда избегать.
...
Рейтинг: 0 / 0
23.03.2004, 12:19
    #32452822
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Как только грузанул записи в гриды можно рубить соединение с базой. И открывать его когда нужно делать добавление, изменение, обновление или выборки из др. мест. Идея сама по себе мне нравится.

Надо написать класс для добавления записей. Объекту класса указывать в какую таблицу пихать записи и в какие поля с типами. Уж слишком геморно это делать чистоганом через АДО.НЕТ.

Если получится более менее рулезный класс - сюда его и пихну.
SA подкинь идейки для написания такого класса.

Вообще ты молодец, отзывчивый и терпеливый.
...
Рейтинг: 0 / 0
23.03.2004, 13:38
    #32453026
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
>Надо написать класс для добавления записей. Объекту класса указывать в какую таблицу пихать записи и в какие поля с типами. Уж слишком геморно это делать чистоганом через АДО.НЕТ.

Простенький класс такой написать не сложно.

Идей вообще полно, начиная от создание своего генератора кода до использования Reflection (MSDN Magazine 2002 August если мне не изменяет память).

Также есть и платные штуки, например Deklarit 2 (SQL и Oracle) (А в 3 версии помоему появилась поддержка Access). Который за несколько секунд за тебя сделает килотонны кода.

P.S. Я в большинстве своем предпочитаю все писать, вручную с генерацией своих исключений, их протоколировании....
...
Рейтинг: 0 / 0
23.03.2004, 14:10
    #32453088
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить новую запись в таблицу?
Я понял. Буду мучить класс.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как добавить новую запись в таблицу? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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