170 похожих чатов

Привет, насколько такой код корректный и нормальный? func (d *DB) queryBool(query

string, args ...any) (result bool, err error) {
res, err := d.db.Query(query, args...)
if err != nil {
return
}
err = res.Scan(&result)
return
}

19 ответов

11 просмотров

QueryRow[Context]

ну и я бы еще явно ошибку после скана проверял

Maxim Biryukov
QueryRow[Context]

QueryContext(ctx, ...) наверное имел в виду

Rostislav Teryaev
QueryContext(ctx, ...) наверное имел в виду

Там же один результат возвращается я имел в виду QueryRow или QueryRowContext. И rows тогда не надо закрывать, в первоначальном виде этого нет почему то

не хватает проверок на NotFound, UniqueViolation и соотвественно отдавать надо не pg ошибки, а свои из DAL, чтобы уже на слое с БЛ проверять эти ошибки и иметь возможность написать логику на них.

знаю что она кастрированная, но там вроде есть ошибки

🦊 Лиса 🌸-🌸 Автор вопроса
Artur Karapetov
знаю что она кастрированная, но там вроде есть оши...

там так-то ошибок никаких и не может возникнуть, кроме как если диск посыпется, допустим у меня выше этой функции просто стоит паник, если err != nil ибо если вылетит какая то ошибка = дальше оно уже работу никак не может продолжить

🦊 Лиса 🌸-🌸 Автор вопроса
Rostislav Teryaev
QueryContext(ctx, ...) наверное имел в виду

а какой тут толк мне от контекста? // rows.Close() я так понимаю в таком случае нужно добавить обязательно?

🦊 Лиса 🌸-🌸 Автор вопроса
🦊 Лиса 🌸 🌸
а какой тут толк мне от контекста? // rows.Close()...

https://go.dev/doc/database/querying а тут Rows не закрывается нигде, кроме последнего примера🤔

🦊 Лиса 🌸 🌸
https://go.dev/doc/database/querying а тут Rows не...

func albumsByArtist(artist string) ([]Album, error) { rows, err := db.Query("SELECT * FROM album WHERE artist = ?", artist) if err != nil { return nil, err } defer rows.Close()

🦊 Лиса 🌸 🌸
https://go.dev/doc/database/querying а тут Rows не...

там queryROW. его не нужно закрывать, его я и предложил.

🦊 Лиса 🌸 🌸
а какой тут толк мне от контекста? // rows.Close()...

контекст - стандартный способ отменить что то, напрмер io прекратить которое уже не нужно это лишь предложение, иметь контекст всегда приятней чем его не иметь

🦊 Лиса 🌸-🌸 Автор вопроса
🦊 Лиса 🌸 🌸
A

тоесть, вот так? func (d *DB) queryBool(query string, args ...any) (result bool, err error) { res := d.db.QueryRow(query, args...) err = res.Scan(&result) return } или лучше вот так? func (d *DB) queryBool(query string, args ...any) (bool, error) { var result bool res := d.db.QueryRow(query, args...) err := res.Scan(&result) return result, err }

🦊 Лиса 🌸 🌸
тоесть, вот так? func (d *DB) queryBool(query str...

мне первый больше нравится, но можно еще 1 и 2 строки в одной написать func (d *DB) queryBool(query string, args ...any) (result bool, err error) { err = d.db.QueryRow(query, args...).Scan(&result) return }

🦊 Лиса 🌸 🌸
а какой тут толк мне от контекста? // rows.Close()...

контекст тут нужен для выставления таймаута. Чтобы приложение навечно не зависло на этой операции

🦊 Лиса 🌸-🌸 Автор вопроса
🦊 Лиса 🌸 🌸
напомню, что у меня sqlite

ну если хочется можно не писать, дело хозяйское) Но хуже точно не будет

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
46
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
вопрос странный немного... в секции interface идёт константа const TableExt: array [0..39] of record _type: byte; _ext : string; end = ( (_type:typeDAT ...
Alexey Kulakov
5
Всем привет! Помогите разобраться с Lazarus. Переношу программу с Delphi 10.2 Tokyo на Lazarus 3.2. У меня есть строка string которая изначально имеет такое содержание (то чт...
Дмитрий Завгородний
4
Карта сайта