Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 | 2 |

 

  Вопрос: Нужна помощь по ADO.NET Добавлено: 26.06.09 13:56  

Автор вопроса:  avers_inc

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 16
Автор ответа:
 avers_inc



Вопросов: 7
Ответов: 19
 Профиль | | #16 Добавлено: 09.07.09 22:36
И все таки: нужно проверять свойство RowState перед обновлением базы или нет?
насколько я понял, если обновляшь через dataadapter.update - то не надо, а если через executenonquery - то надо, правильно?

Ответить

Номер ответа: 17
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #17 Добавлено: 10.07.09 00:10
Это функция - взял с мсдн. Есть функции - они возврашают что то - тое может быть число, строка или объект Return adapter - возвращает адаптер - тое тот адаптер который мы создали и задали свойства. Есть процедуры - они совершают действия (могут быть с параметрами и без) - они ничего не возвращают - тое просто что то делают.
Длинный код - потому что надо задать все параметры, одной строкой можно, но в эту строку надо включить все строки которые были изменены или обновлены или удалены, а это будет длинно и очень мутно. А при задании параметров всё работает красиво, хотя и слегка длинновато, но зато работает красиво, а лучше используй хранимые процедуры в базе и будет ещё красивее.)

Ответить

Номер ответа: 18
Автор ответа:
 avers_inc



Вопросов: 7
Ответов: 19
 Профиль | | #18 Добавлено: 10.07.09 00:30
Длинный код - потому что надо задать все параметры, одной строкой можно, но в эту строку надо включить все строки которые были изменены или обновлены или удалены, а это будет длинно и очень мутно. А при задании параметров всё работает красиво, хотя и слегка длинновато, но зато работает красиво, а лучше используй хранимые процедуры в базе и будет ещё красивее.)

я имел ввиду следующее: если я например строку
  1. command = New SqlCommand("INSERT INTO [Menu] ([menu_type], [menu_cost], [menu_tax]) VALUES (@menu_type, @menu_cost, @menu_tax)", connection)

заменю на
  1. command = New SqlCommand("INSERT INTO [Menu] ([menu_type], [menu_cost], [menu_tax]) VALUES ('" & me.txtType.text & "', '" & me.txtCost.text & "', '" & me.txtTax.text & "')", connection)

и не буду добавлять никаких параметров - будет тот же результат или нет? ну и аналогично с изменением и удалением...

Ответить

Номер ответа: 19
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #19 Добавлено: 10.07.09 00:32
Когда обновляешь через дата адптер как в моём примере, то не надо - он сам проверяет какие строки были обновлены, удалены или добавлены и сам вставляет нужные параметры в запросу.
executenonquery - это выполнить запрос действие - и может возвратить количество задействованных строк. Тое если ты работаешь с командом, то в цикле проверяешь каждую строку RowState и если она была изменина, то создаёшь запрос update, задаёшь параметры в строку и выполняешь команду executenonquery команда. Когда надо проверять и нет - зависит от того как ты решил реализовать решение тойили иной проблемы.

Ответить

Номер ответа: 20
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #20 Добавлено: 10.07.09 00:38
Да результат будет тот же, только в адаптере он все строки добавит сам, а тут тебе для каждой придётся прописывать. И ещё если ты не изменил интерфейс и используешь датагридвьев, то не советую использовать текстовые поля как временное хранилище данных. Я лично стараюсь напрямую использовать, чтобы не затрагивать лишних ресурсов.

Ответить

Номер ответа: 21
Автор ответа:
 avers_inc



Вопросов: 7
Ответов: 19
 Профиль | | #21 Добавлено: 10.07.09 12:23
кстати, если интересно, нашел неплохой примерчик кода для задания параметров для разных таблиц: http://www.cyberforum.ru/ado-net/thread39688-2.html

Ответить

Номер ответа: 22
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #22 Добавлено: 10.07.09 18:55
С параметрами я и сам могу разобраться, а вот к коду Си шарп ещё не очень привык. :)

Ответить

Номер ответа: 23
Автор ответа:
 HolyG



ICQ: 348076698 

Вопросов: 0
Ответов: 1
 Профиль | | #23 Добавлено: 13.10.09 12:17
День добрый, господа.

подскажите, как избавиться от возникновения ошибки:


System.IO.FileNotFoundException was unhandled
  FileName=System.EnterpriseServices.Wrapper.dll
  FusionLog=""
  Message=Невозможно загрузить файл или сборку "System.EnterpriseServices.Wrapper.dll" или один из зависимых от них компонентов. Не удается найти указанный файл.
  Source=System.EnterpriseServices
  StackTrace:
       в System.EnterpriseServices.ContextUtil.get_IsInTransaction()
       в System.Data.Common.ADP.IsSysTxEqualSysEsTransaction()
       в System.Data.Common.ADP.NeedManualEnlistment()
       в System.Data.OleDb.OleDbConnection.Open()
       в WindowsApplication1.Form1.Button1_Click(Object sender, EventArgs e) в D:\kgvb\WindowsApplication3\WindowsApplication3\Form1.vb:строка 22
       в System.Windows.Forms.Control.OnClick(EventArgs e)
       в System.Windows.Forms.Button.OnClick(EventArgs e)
       в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.ButtonBase.WndProc(Message& m)
       в System.Windows.Forms.Button.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       в System.Windows.Forms.Application.Run(ApplicationContext context)
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       в WindowsApplication1.My.MyApplication.Main(String[] Args) в 17d14f5c-a337-4978-8281-53493378c1071.vb:строка 81
       в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       в System.Threading.ThreadHelper.ThreadStart()
  InnerException:


переустановка Framework 3.5 заканчивается неудачей.
Поставил Framework 4 Beta1.

Ответить

Номер ответа: 24
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #24 Добавлено: 16.10.09 18:03
  1. command = New SqlCommand("INSERT INTO [Menu] ([menu_type], [menu_cost], [menu_tax]) VALUES ('" & me.txtType.text & "', '" & me.txtCost.text & "', '" & me.txtTax.text & "')", connection)

Вот так делать ни в коем случае нельзя, иначе тебе взломают базу.
Подробнее читай про Sql Injection

подскажите, как избавиться от возникновения ошибки

Для начала попробуй положить эту System.EnterpriseServices.Wrapper.dll в папку проекта или проинслатируй ее в GAC

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам