powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / трех уровневая система написание методов
73 сообщений из 73, показаны все 3 страниц
трех уровневая система написание методов
    #38147534
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброго времени суток всем. Помогите пожалуйста мне с написанием методов отображения всей таблицы из базы данных, одного элемента из таблицы, удаления, апдейт и инсерт. заранее спасибо.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147541
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если можно киньте пару рабочих примеров
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147589
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxПомогите пожалуйста мне с написанием методов отображения всей таблицы из базы данных, одного элемента из таблицы, удаления, апдейт и инсерт. заранее спасибо.
Поможем. Покажи код, что получилось написать, а в чём затык.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147593
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
отображение всей таблицы
public DataSet get()
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "select * from eee.tab;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
NpgsqlDataAdapter da = new NpgsqlDataAdapter(com);
DataSet bb = new DataSet();
da.Fill(bb);
return bb;
}

удаление выдает ошибку

public void delete(int NREC)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "delete * from eee.tab where NREC=@NREC;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4);
com.Parameters["@NREC"].Value = NREC;
try
{
conn.Open();
com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
}

сама ошибка

Ошибка сервера в приложении '/'.
ObjectDataSource 'ObjectDataSource1' не может найти не групповой метод 'delete', который принимает параметры типа 'WebApplication5.tab'.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.InvalidOperationException: ObjectDataSource 'ObjectDataSource1' не может найти не групповой метод 'delete', который принимает параметры типа 'WebApplication5.tab'.

Ошибка источника:

Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147600
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
база данных PostgreSQL
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147602
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но мне хотяб основные принципы по созданию этих меьодов нужны, я только пару недель назад это все начал изучать
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147617
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, а есть звездочку убрать после delete?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147648
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ

мне ведь нужно всю строчку удалить
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147655
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xCyMPaKxмне ведь нужно всю строчку удалить
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147656
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
варианта "не всю" в принципе не существует
звездочка не нужна
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147658
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
xCyMPaKxМСУ

мне ведь нужно всю строчку удалить
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147661
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятно=) я попробую
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147672
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я сюда завтра зайду, вы сюда зайдете?

сейчас мне нужно идти
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147679
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, и я загляну на чашечку. Можно?.. :-)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147681
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

и я тоже буду, кто еще будет? )))))))
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147686
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно ребят буду рад любой помощи=)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147702
Березовский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже загляну
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147905
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Березовский,

по прилету из Лондона тебя встретят и проводят
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38147915
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxМСУ, я сюда завтра зайду, вы сюда зайдете? сейчас мне нужно идти
Зайду :)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148782
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я убрал звездочку после delete все равно ошибка вылетает=((
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148784
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замени @NREC на NREC
xCyMPaKx
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 public void delete(int NREC)
        {
            NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
            string sqlcom = "delete * from eee.tab where NREC=@NREC;";
            NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
            com.CommandType = CommandType.Text;
            com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4);
            com.Parameters["@NREC"].Value = NREC;
            try
            {
                conn.Open();
                com.ExecuteNonQuery();
            }
            catch (SyntaxErrorException e)
            {
                throw new ApplicationException("error");
            }
            finally
            {
                conn.Close();
            }
        }
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148785
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

то же самое=(((
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148786
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public void delete(int NREC)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "delete from eee.tab where NREC=@NREC;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
com.Parameters.Add("NREC", NpgsqlDbType.Integer, 4);
com.Parameters["NREC"].Value = NREC;
try
{
conn.Open();
com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
}
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148798
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, а тупо AddWithValue заюзать нельзя? :)

Код: c#
1.
2.
3.
4.
5.
...
com.CommandType = CommandType.Text;
com.Parameters.AddWithValue("@NREC", NREC);
try
...



Хотя, наверное, разницы нет.
Или вот так:

Код: c#
1.
2.
3.
4.
5.
...
com.CommandType = CommandType.Text;
com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4).Value = NREC;
try
...
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148800
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и исчо вариант:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "delete from eee.tab where NREC=:NREC;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
com.Parameters.Add(new NpgsqlParameter("NREC", DbType.Int32));
com.Parameters[0].Value = NREC;
try
...
}
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148801
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 13917731 "@NREC" заменить на "NREC" - видимо, пора уже спать.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148802
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

та же самая ошибка, может в чем то другом ошибка?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148803
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13917738 - ложь, не надо ниче менять :-)

xCyMPaKx, эм... Ну хрен знает. Надо подумать.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148804
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

вот я тоже не понимаю в чем косяк
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148805
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно как нибудь через data set все действия реализовать?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148806
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, а без параметров работает? Ну если втупую:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public void delete(int NREC)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "delete from eee.tab where NREC=" + NREC;
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
try
{
conn.Open();
com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
} 
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148808
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

аналогичная ошибка...
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148810
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, так, а если тоже самое, только указать в запросе конкретный NREC (который есть).

Код: c#
1.
2.
3.
...
string sqlcom = "delete from eee.tab where NREC=2";
...
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148811
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

видимо дело не в этом, потому-что лшибка та же...
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148812
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, а если этот запрос попробовать непосредственно в субд?
Вообще, напрягает название таблицы через точку... Это нормально?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148817
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Immortal,

это полное ее название без нее вообще ничего не работает...
запрос в БД работает.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148822
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ли как нибудь реализовать метод Delete через Data set?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148889
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я разобрался с этой ошибкой там входные параметры были не верно указаны
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38148892
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь у меня написано так:
public DataSet delete(tab NREC)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "delete from eee.tab where NREC= @NREC";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
com.CommandType = CommandType.Text;
com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4).Value = NREC;
NpgsqlDataAdapter da = new NpgsqlDataAdapter(com);
DataSet bb = new DataSet();
da.Update(bb);
return bb;
}
и ошибка:
Операции Update не удалось найти TableMapping["Table"] или DataTable "Table".
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.InvalidOperationException: Операции Update не удалось найти TableMapping["Table"] или DataTable "Table".
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38149056
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38149081
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, смотрю Вы начали совсем не понятные эксперименты.
Покажите как Вы разместили ObjectDataSource на странице, что указали в качестве DeleteMethod, DeleteParameters, TypeName.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38149090
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38149248
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я в этом только недавно начал разбираться, и в делет метод и параметрах ничего не прописывал, а что там должно быть
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38149306
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, тогда прочитайте сл. статью: ObjectDataSource.DeleteMethod - свойство .
И покажите, как я просил, как вы разместили ObjectDataSource на странице. Код покажите.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152344
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public DataSet update(int NREC, string Name, string VNum, string Unn, string Adress)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "update eee.tab set 'NREC'='@NREC', 'Name'='@name', 'VNum'='@VNum','Unn'='@Unn', "
+ "'Adress'='@Adress' where 'NREC'=@ONREC;";
string sqlcoms = "select * from eee.tab;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
NpgsqlCommand coms = new NpgsqlCommand(sqlcoms, conn);
NpgsqlDataAdapter da = new NpgsqlDataAdapter(com);

DataSet bb = new DataSet();
da.SelectCommand = coms;
da.Fill(bb);

com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4/*,"NREC"*/).Value=NREC;
com.Parameters.Add("@Name", NpgsqlDbType.Text,50/*,"Name"*/).Value=Name;
com.Parameters.Add("@VNum", NpgsqlDbType.Text,50/*,"VNum"*/).Value=VNum;
com.Parameters.Add("@Unn", NpgsqlDbType.Text,50/*,"Unn"*/).Value=Unn;
com.Parameters.Add("@Adress", NpgsqlDbType.Text,50/*,"Adress"*/).Value=Adress;
NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4, "NREC");
param.SourceVersion = DataRowVersion.Original;

da.UpdateCommand = com;
da.Update(bb);
return bb;
}
код метода update ошибок не выдает, но и не обновляет, в таблице остается то же значение что и было. Подскажите пожалуйста в чем может быть проблема.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152451
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx
Код: sql
1.
2.
update eee.tab set 'NREC'='@NREC', 'Name'='@name', 'VNum'='@VNum','Unn'='@Unn', 
'Adress'='@Adress' where 'NREC'=@ONREC;

так стало понятно?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152453
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

не особо можно по подробнее?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152459
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152466
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

в PostgreSQL запрос работает если вы об этом
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152496
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в PG не спец, так что объясните уж Вы как же этот запрос работает

Я в документации (ссылку я привел) вижу, что одинарная кавычка означает строку, а если надо имя поля, то кавычка должна быть двойная
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152511
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

двойную ковычку нельзя поставить в строке SQL запроса в asp.net а с еденичной тоже работает
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152526
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш запрос delete содержит имя поля NREC, не заключенное ни в какие кавычки
Он работает?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152585
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

он работает точно так же, а как вы предлагаете организовать запрос?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152594
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxон работаетзначит, кавычки не нужны
предлагаю не обрамлять названия полей кавычками
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152700
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

так тот же результат...
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152752
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если использовать ExecuteNonQuery ?
(ссылку я давал выше)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152774
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

я просто через update хочу все реалезовать=)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152785
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда берите что-то типа
http://www.postgresql.org/docs/8.4/interactive/pgstatstatements.html
и смотрите, что реально происходит на sql сервере
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152792
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку
http://msdn.microsoft.com/en-us/library/33y2221y.aspx When you call the Update method, the DataAdapter analyzes the changes that have been made and executes the appropriate command (INSERT, UPDATE, or DELETE)
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152856
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxПаганель,

я просто через update хочу все реалезовать=)Через метод NpgsqlDataAdapter.Update? У Вас это не получится.
1. У Вас в наборе данных (DataSet) нет ни одной изменённой записи;
2. У Вас там вообще записей нет.
Именно из-за этого ничего и не происходит.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152867
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxpublic DataSet update(int NREC, string Name, string VNum, string Unn, string Adress)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
string sqlcom = "update eee.tab set 'NREC'='@NREC', 'Name'='@name', 'VNum'='@VNum','Unn'='@Unn', "
+ "'Adress'='@Adress' where 'NREC'=@ONREC;";
string sqlcoms = "select * from eee.tab;";
NpgsqlCommand com = new NpgsqlCommand(sqlcom, conn);
NpgsqlCommand coms = new NpgsqlCommand(sqlcoms, conn);
NpgsqlDataAdapter da = new NpgsqlDataAdapter(com);

DataSet bb = new DataSet();
da.SelectCommand = coms;
da.Fill(bb);

com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4/*,"NREC"*/).Value=NREC;
com.Parameters.Add("@Name", NpgsqlDbType.Text,50/*,"Name"*/).Value=Name;
com.Parameters.Add("@VNum", NpgsqlDbType.Text,50/*,"VNum"*/).Value=VNum;
com.Parameters.Add("@Unn", NpgsqlDbType.Text,50/*,"Unn"*/).Value=Unn;
com.Parameters.Add("@Adress", NpgsqlDbType.Text,50/*,"Adress"*/).Value=Adress;
NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4, "NREC");
param.SourceVersion = DataRowVersion.Original;

da.UpdateCommand = com;
da.Update(bb);
return bb;
}
код метода update ошибок не выдает, но и не обновляет, в таблице остается то же значение что и было. Подскажите пожалуйста в чем может быть проблема.Судя по Вашему коду Вы вообще не понимаете, что он делает. Может Вам книжку какую для начала почитать?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152957
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAxCyMPaKxПаганель,

я просто через update хочу все реалезовать=)Через метод NpgsqlDataAdapter.Update? У Вас это не получится.
1. У Вас в наборе данных (DataSet) нет ни одной изменённой записи;
2. У Вас там вообще записей нет.
Именно из-за этого ничего и не происходит. Хотя нет, записи есть, только сейчас заметил текст запроса sqlcoms .
Но так как записи эти не меняются, то и NpgsqlDataAdapter не вызывает для них команду для сохранения изменений в БД.
Зачем сохранять изменения, которых нет?
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38152963
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее метод должен быть таким:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public int Update( int recordNo, string name, string number, string unn, string address )
{
    using ( var connection = new NpgsqlConnection( "Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;" ) )
    {
        var command = new NpgsqlCommand( @"
            UPDATE eee.tab
            SET    Adress = @address,
                   Name   = @name,
                   Unn    = @unn,
                   VNum   = @number
            WHERE  NREC   = @recordNo", connection );

        command.Parameters.Add( "@address", NpgsqlDbType.Text, 50/*,"Adress"*/).Value = address;
        command.Parameters.Add( "@name", NpgsqlDbType.Text, 50/*,"Name"*/).Value = name;
        command.Parameters.Add( "@number", NpgsqlDbType.Text, 50/*,"VNum"*/).Value = number;
        command.Parameters.Add( "@unn", NpgsqlDbType.Text, 50/*,"Unn"*/).Value = unn;
        command.Parameters.Add( "@recordNo", NpgsqlDbType.Integer, 4/*,"NREC"*/).Value = recordNo;

        return command.ExecuteNonQuery();
    }
}
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155231
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

прописал так
public int update(int NREC, string Name, string VNum, string Unn, string Adress)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
//string sqlcom = "update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
// + "Adress=@Adress where NREC=@ONREC;";
NpgsqlCommand com = new NpgsqlCommand(@"update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
+ "Adress=@Adress where NREC=@ONREC;", conn);

com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4, "NREC");
com.Parameters.Add("@Name", NpgsqlDbType.Text, 50, "Name");
com.Parameters.Add("@VNum", NpgsqlDbType.Text, 50, "VNum");
com.Parameters.Add("@Unn", NpgsqlDbType.Text, 50, "Unn");
com.Parameters.Add("@Adress", NpgsqlDbType.Text, 50, "Adress");
NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4, "NREC");
param.SourceVersion = DataRowVersion.Original;
try
{
conn.Open();
return com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
}

выдает ошибку:
ERROR: 42703: column "nrec" does not exist
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155347
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, и правильно делает, что выдаёт ошибку. Потому как она есть.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155371
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155392
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx, первым делом учимся оформлять свой код. Для этого читаем статью: Как мне оформить свое сообщение?

Получаем:
Код: c#
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.
27.
28.
29.
30.
public int update(int NREC, string Name, string VNum, string Unn, string Adress)
{
    NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
    //string sqlcom = "update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
    // + "Adress=@Adress where NREC=@ONREC;";
    NpgsqlCommand com = new NpgsqlCommand(@"update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
+ "Adress=@Adress where NREC=@ONREC;", conn);

    com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4, "NREC");
    com.Parameters.Add("@Name", NpgsqlDbType.Text, 50, "Name");
    com.Parameters.Add("@VNum", NpgsqlDbType.Text, 50, "VNum");
    com.Parameters.Add("@Unn", NpgsqlDbType.Text, 50, "Unn");
    com.Parameters.Add("@Adress", NpgsqlDbType.Text, 50, "Adress");
    NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4, "NREC");
    param.SourceVersion = DataRowVersion.Original;

    try
    {
        conn.Open();
        return com.ExecuteNonQuery();
    }
    catch (SyntaxErrorException e)
    {
        throw new ApplicationException("error");
    }
    finally
    {
        conn.Close();
    }
}
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155403
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь смотрим выражение, из-за которого возникает ошибка:
Код: c#
1.
com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4, "NREC");


Последний параметр в методе Add - это имя колонки в источнике данных (выше Паганель привёл ссылку на документацию).
Но у Вас нет никакого источника данных, следовательно и колонка в нём не существует, о чём и говорит текст ошибки: column "nrec" does not exist .
У Вас на вход метода подаются параметры: int NREC, string Name, string VNum, string Unn, string Adress.
Вот их и используйте. Как это должно выглядеть, я писал выше.
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155431
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

public int update(int NREC, string Name, string VNum, string Unn, string Adress)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
//string sqlcom = "update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
// + "Adress=@Adress where NREC=@ONREC;";
NpgsqlCommand com = new NpgsqlCommand(@"update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
+ "Adress=@Adress where NREC=@NREC;", conn);

com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4).Value=NREC;
com.Parameters.Add("@Name", NpgsqlDbType.Text, 50).Value=Name;
com.Parameters.Add("@VNum", NpgsqlDbType.Text, 50).Value=VNum;
com.Parameters.Add("@Unn", NpgsqlDbType.Text, 50).Value=Unn;
com.Parameters.Add("@Adress", NpgsqlDbType.Text, 50).Value=Adress;
//NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4);
//param.Value = NREC;
//param.SourceVersion = DataRowVersion.Original;
try
{
conn.Open();
return com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
}
если вы имели в вмду что нужно написать вот так то ошибка та же
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155541
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKx,

всем спасибо за помошь, мне сменили задачу, делать все под MYSQL там вроде стандартные функции для этого всего есть через SQLdatesource
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38155628
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xCyMPaKxskyANA,

public int update(int NREC, string Name, string VNum, string Unn, string Adress)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;port=5432;user id=postgres;password=111111;database=postgres;");
//string sqlcom = "update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
// + "Adress=@Adress where NREC=@ONREC;";
NpgsqlCommand com = new NpgsqlCommand(@"update eee.tab set NREC=@NREC, Name=@name, VNum=@VNum,Unn=@Unn, "
+ "Adress=@Adress where NREC=@NREC;", conn);

com.Parameters.Add("@NREC", NpgsqlDbType.Integer, 4).Value=NREC;
com.Parameters.Add("@Name", NpgsqlDbType.Text, 50).Value=Name;
com.Parameters.Add("@VNum", NpgsqlDbType.Text, 50).Value=VNum;
com.Parameters.Add("@Unn", NpgsqlDbType.Text, 50).Value=Unn;
com.Parameters.Add("@Adress", NpgsqlDbType.Text, 50).Value=Adress;
//NpgsqlParameter param = com.Parameters.Add("@ONREC", NpgsqlDbType.Integer, 4);
//param.Value = NREC;
//param.SourceVersion = DataRowVersion.Original;
try
{
conn.Open();
return com.ExecuteNonQuery();
}
catch (SyntaxErrorException e)
{
throw new ApplicationException("error");
}
finally
{
conn.Close();
}
}
если вы имели в вмду что нужно написать вот так то ошибка та жеНе верю
Скорее всего ошибка в том, что в запросе Вы пишете @name строчными буквами, а в методе Add с заглавной: @Name .
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38160293
xCyMPaKx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем за ответы, ларчек проще открывался: на самом деле запрос передовал все названия столбцов маленькими буквами, а они в базе все с заглавной начинались=)))
...
Рейтинг: 0 / 0
трех уровневая система написание методов
    #38161251
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУxCyMPaKxМСУ, я сюда завтра зайду, вы сюда зайдете? сейчас мне нужно идти
Зайду :)зашёл?
...
Рейтинг: 0 / 0
73 сообщений из 73, показаны все 3 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / трех уровневая система написание методов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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