Страница: 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
я имел ввиду следующее: если я например строку
заменю на
и не буду добавлять никаких параметров - будет тот же результат или нет? ну и аналогично с изменением и удалением...
Номер ответа: 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
Вот так делать ни в коем случае нельзя, иначе тебе взломают базу.
Подробнее читай про Sql Injection
Для начала попробуй положить эту System.EnterpriseServices.Wrapper.dll в папку проекта или проинслатируй ее в GAC