title: Why even use *DB.exec() or prepared statements in Golang?
body: <p>I'm using golang with Postgresql.</p>
  
  <p>It says <a href="http://go-database-sql.org/retrieving.html" rel="noreferrer">here</a> that for operations that do not return rows (insert, delete, update) we should use <code>exec()</code></p>
  
  <blockquote>
    <p>If a function name includes Query, it is designed to ask a question of the database, and will return a set of rows, even if it’s empty. Statements that don’t return rows should not use Query functions; they should use Exec().</p>
  </blockquote>
  
  <p>Then it says <a href="http://go-database-sql.org/prepared.html" rel="noreferrer">here</a>:</p>
  
  <blockquote>
    <p>Go creates prepared statements for you under the covers. A simple db.Query(sql, param1, param2), for example, works by preparing the sql, then executing it with the parameters and finally closing the statement.</p>
  </blockquote>
  
  <p>If <strong><code>query()</code> uses under the covers prepared statements</strong> why should I even bother using prepared statements?</p>