powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / sqlDataAdapter.Update()
14 сообщений из 14, страница 1 из 1
sqlDataAdapter.Update()
    #32272021
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На строку кода :
//сохранить изменения
sqlDataAdapter1.Update(dataset11,"modules");
//
дебаггер выдает системную ошибку. Что конкретно не так в коде непонятно :( Разве что ошибка не синтаксическая.
Что делать??
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32272045
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведи полный текст "системной ошибки"
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32272049
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может таблицы modules нет в этом dataset'e?
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32272146
NickKarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причин может быть куча:
1. Если обращаешься к таблице - синтаксическая ошибка запроса, несоответствие типов.
2. Если обновление идет через хранимые процедуры - ошибка в процедуре, отсутствие такой процедуры в твоей схеме, ошибка в создании параметров (adapter.insertCommand.parameters.add(параметры)). Надо для каждого параметра указывать тип,длину, SourceComumn(типа из какой колонки таблицы он берется/кладется).
Вроде все...
Если пользуешься SQL Server, то довольно неплохой способ отладки - запустить profiler и посмотреть, на какой именно команде все затыкается, и попробовать выполнить ее ручками (так определишь, где ошибка - на клиенте или сервере).
А еще лучше - покажи куски кода создания Adapter'a и прочее.
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32272492
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в хранимой процедуре. Пришлось ,правда, все пересматривать и перепроверять :( Сразу ведь непонятно было что происходит... Хорошо хоть кода пока немного, не так сложно все перепроверить .
Зато теперь работает!
Спасибо всем за советы :)
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32272968
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll
Additional information: System error.

Это текст ошибки. Она у меня и сейчас появляется периодически :(
Может кто знает что это значит??
Кроме того что ошибка на клиенте, конечно.....
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32273455
NickKarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки покажи код, создающий Adapter, и код процедуры. Кстати, указанное тобой исключение у меня выскакивало, когда один из параметров процедуры был с неуказанной длиной (NVarChar, указывать ее обязательно и на клиенте и на сервере).
Оно же происходит при ЛЮБЫХ ошибках выполнения процедур (в т.ч. когда что-то не так на самом сервере).
Предположение: может, ты неправильно обошелся с первичным ключом таблицы при вставках? http://www.gotdotnet.ru/default.aspx?s=faqs&d_no=34487#f165" TARGET="_blank">Тогда посмотри здесь
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32274039
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2NickKarev
Все-таки покажи код, создающий Adapter, и код процедуры. Кстати, указанное тобой исключение у меня выскакивало, когда один из параметров процедуры был с неуказанной длиной (NVarChar, указывать ее обязательно и на клиенте и на сервере).
Нет. Это уже не из-за параметров процедур - там вроде все в порядке.
ALTER PROCEDURE [SERVER\bege].UpdateCommand (
@name varchar(40),@module_pr varchar(40),@descrip text,
@grup varchar(40),@howtocall varchar(45),@security int,
@inopenform bit,@order_gr int,@imagekey varchar(20),
@Original_module_pr varchar(40),@Original_grup varchar(40),
@Original_howtocall varchar(45),@Original_imagekey varchar(20),
@Original_inopenform bit,@Original_name varchar(40),
@Original_order_gr int,@Original_security int ) AS
SET NOCOUNT OFF;
UPDATE dbo.modules SET name = @name, module_pr = @module_pr, descrip = @descrip, grup = @grup, howtocall = @howtocall, security = @security, inopenform = @inopenform, order_gr = @order_gr, imagekey = @imagekey WHERE (module_pr = @Original_module_pr) AND (grup = @Original_grup) AND (howtocall = @Original_howtocall OR @Original_howtocall IS NULL AND howtocall IS NULL) AND (imagekey = @Original_imagekey OR @Original_imagekey IS NULL AND imagekey IS NULL) AND (inopenform = @Original_inopenform) AND (name = @Original_name) AND (order_gr = @Original_order_gr) AND (security = @Original_security OR @Original_security IS NULL AND security IS NULL);
SELECT name, module_pr, descrip, grup, howtocall, security, inopenform, order_gr, imagekey FROM dbo.modules WHERE (module_pr = @module_pr)
Создаю уже 3ью форму с самым простым примером и опять та же ошибка
Оно же происходит при ЛЮБЫХ ошибках выполнения процедур (в т.ч. когда что-то не так на самом сервере).
И с сервером - порядок..
Возникло подозрение что Update() неправильно использую - но без него изменения не сохраняются.Может как-то иначе их сохранять???
private void Form1_Load(object sender, System.EventArgs e)
{this.sqlDataAdapter1.Fill(dataSet11);}
private void Form1_Closed(object sender, System.EventArgs e) { {this.sqlDataAdapter1.Update(this.dataSet11,this.dataSet11.Tables[0].TableName);}
Но работало ведь, транзакции закрывал и на сервере данные изменялись, а теперь стопорится на Update() и дальше никак :(
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32274697
NickKarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Bege:
Ты умудрился не показать самый интересный участок кода :) - создание DataAdapter (он создается в функции InitializeComponent в форме). Лучше всего будет, если кинешь мне на мыло весь код (sql для создания БД и проект).
На всякий случай, подкидываю еще области для раздумий:
- Метод Update у DataAdapter просматривает всю указанную таблицу, и для записей, помеченных как добавленные/измененные/удаленные выполняет соответствующие команды (DataAdapter.InsertCommand, DataAdapter.DeleteCommand,DataAdapter.UpdateCommand, причем Select в твоей UpdateCommand может быть бесполезен, если ты не поставил руками обнвление DataSet из первой выбранной записи (ms-help://MS.NETFrameworkSDKv1.1/cpguidenf/html/cpconusingparameterswithdataadapters.htm)). Если у тебя на таблице висят триггеры, которые что-то меняю и ты хочешь сразу видеть эти изменения, помечай параметры как OUT на сервере и на клиенте и передавай изменения через них.
Да, если на таблицу повешены триггеры, то ошибки могут происходить и в них, а виноватым опять окажется DataAdapter.Update
Для нормальной работы DataAdapter'a надо ОБЯЗАТЕЛЬНО приделать к нему все три команды DML(InsertCommand,DeleteCommand,UpdateCommand, даже если ты делаешь изменения, вроде бы не требующие наличия всех команд), так что не зацикливайся на UpdateCommand.
В общем, лучше все же пошли проблеммный проект и БД.
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32275044
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2NickKarev
>Ты умудрился не показать самый интересный участок кода :)
Код-то тут оказался ни причем :) Опытным путем (испытанием всех таблиц базы Updat'ом) , было выяснено что не апдейтятся только таблицы в которых есть поля типа text. Изменяю на varchar -и все работает!
В чем причина такой реакции Ms Sql не представляю, Хотя интересно было бы узнать ;) Но бороться я с ним не буду - пусть будут varchar !
ALTER PROCEDURE [SERVER\bege].UpdateCommand (
@name varchar(40),@module_pr varchar(40),@descrip text,
@grup varchar(40),@howtocall varchar(45),@security int,
@inopenform bit,@order_gr int,@imagekey varchar(20),
@Original_module_pr varchar(40),@Original_grup varchar(40),
@Original_howtocall varchar(45),@Original_imagekey varchar(20),
@Original_inopenform bit,@Original_name varchar(40),
@Original_order_gr int,@Original_security int )
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32275045
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2NickKarev
>Ты умудрился не показать самый интересный участок кода :)
Код-то тут оказался ни причем :) Опытным путем (испытанием всех таблиц базы Updat'ом) , было выяснено что не апдейтятся только таблицы в которых есть поля типа text. Изменяю на varchar -и все работает!
В чем причина такой реакции Ms Sql не представляю, Хотя интересно было бы узнать ;) Но бороться я с ним не буду - пусть будут varchar !
ALTER PROCEDURE [SERVER\bege].UpdateCommand (
@name varchar(40),@module_pr varchar(40),@descrip text,
@grup varchar(40),@howtocall varchar(45),@security int,
@inopenform bit,@order_gr int,@imagekey varchar(20),
@Original_module_pr varchar(40),@Original_grup varchar(40),
@Original_howtocall varchar(45),@Original_imagekey varchar(20),
@Original_inopenform bit,@Original_name varchar(40),
@Original_order_gr int,@Original_security int )
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32276093
NickKarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь энто описано, но вроде все должно работать . Настораживает то, что text - по не-Unicode тип, а string в c# - unicode. Глюк мог быть в момент маршилинга в SqlDbType.Text или во время преобразования строки dataSet (может, он неправильный?)
Если захочешь использовать длинный текст, попробуй делать так:
System.Text.Encoding enc=System.Text.Encoding.GetEncoding(типа unicocde);
byte[] data=enc.getBytes(строка);
а потом эти bytes[] спокойно можно писать в БД как image (проверял)

Истина где-то рядом....
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32276371
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...будем искать :)
...
Рейтинг: 0 / 0
sqlDataAdapter.Update()
    #32277334
NickKarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда найдешь, поделись опытом.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / sqlDataAdapter.Update()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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