powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / трех уровневая система написание методов
23 сообщений из 73, страница 3 из 3
трех уровневая система написание методов
    #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
23 сообщений из 73, страница 3 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / трех уровневая система написание методов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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