Pull to refresh

Comments 16

if err != err {
log.Fatal(err)
}


Опечатка или так и должно быть?
А defer должен закрывать только rows, а db закрывать не нужно?
Вообще обычно соединение открывается только один раз в программе, и потом дальше везде используется. Его можно не закрывать, хотя это хорошая практика.
Обычно полостные операции делаются через разрез, который делается в начале операции. Потом можно и не зашивать. Может конечно случится утечка органов у пациента, но ничего. подойдете к главврачу Вам нового выдадут.
Хорошие манеры надо бы сразу развивать
Рекомендую внимательно прочитать документацию по database/sql. Инстанс соединения нужно создавать единожды, и закрывать его перед завершением программы. Причем это закрытие будет иметь мало смысла, потому что при завершении оно и так произойдет.
Открыл соединение — поработал с клиентом/сервером — закрой, инициировал конструктор класса — поработал с элементом — инициируй деструктор, снял штаны — пос@#$ал — надень штаны, открыл дверь — вошел/вышел — закрой дверь.
Хорошие манеры вообще много где пригождаются, а не только в программировании.
То есть вы даже не почитав документацию по database/sql, ринетесь создавать соединения и освобождать ресурсы, хотя там явно прописано так не делать?
func (*DB) Close

func (db *DB) Close() error
Close closes the database, releasing any open resources.

It is rare to Close a DB, as the DB handle is meant to be long-lived and shared between many goroutines.


А потом, как в реализациях джавы, все меряются друг перед другом кто круче трэш коллектор напишет, вместо того чтобы научить ширинку после посещения туалета застегивать коннекшн за собой закрывать.
Давайте закроем тему. Я понимаю что язык для начинающих. Это как для дошкольников обувь на velcro липучках. А потом на призывном пункте народ охреневает, как это лоб в 18 лет шнурки завязывать не умеет.
В Java программах соединение тоже нужно закрыть явным образом, сборка мусора и закрытие ресурсов — разные вещи. (При работе в контейнерах есть нюансы, но в данном случае значения не имеет).
Для Linux немного сложнее, но это не входит в рамки статьи. Думаю, Google вам поможет.

а ну, спасибо, если linux ищите сами)
«code.google.com/p/odbc»

Перенесли бы уже на Github :)
Я бы добавил в статью упоминание о том, что database/sql — это универсальный способ для работы с БД, вне зависимости от драйвера, и научившись работать с ним, работа с любой новой БД остается практически неизменной в плане кода.
У меня вопрос к сообществу. Можно ли использовать при доступе к MS SQL ADO, а не ODBC?
Я думаю это подойдет github.com/mattn/go-adodb
Sign up to leave a comment.

Articles