| 1236 | } |
| 1237 | |
| 1238 | func (s *AdapterTests) TestPreparedStatements() { |
| 1239 | sess := s.Session() |
| 1240 | |
| 1241 | var val int |
| 1242 | |
| 1243 | { |
| 1244 | stmt, err := sess.SQL().Prepare(`SELECT 1`) |
| 1245 | s.NoError(err) |
| 1246 | s.NotNil(stmt) |
| 1247 | |
| 1248 | q, err := stmt.Query() |
| 1249 | s.NoError(err) |
| 1250 | s.NotNil(q) |
| 1251 | s.True(q.Next()) |
| 1252 | |
| 1253 | err = q.Scan(&val) |
| 1254 | s.NoError(err) |
| 1255 | |
| 1256 | err = q.Close() |
| 1257 | s.NoError(err) |
| 1258 | |
| 1259 | s.Equal(1, val) |
| 1260 | |
| 1261 | err = stmt.Close() |
| 1262 | s.NoError(err) |
| 1263 | } |
| 1264 | |
| 1265 | { |
| 1266 | err := sess.Tx(func(tx db.Session) error { |
| 1267 | stmt, err := tx.SQL().Prepare(`SELECT 2`) |
| 1268 | s.NoError(err) |
| 1269 | s.NotNil(stmt) |
| 1270 | |
| 1271 | q, err := stmt.Query() |
| 1272 | s.NoError(err) |
| 1273 | s.NotNil(q) |
| 1274 | s.True(q.Next()) |
| 1275 | |
| 1276 | err = q.Scan(&val) |
| 1277 | s.NoError(err) |
| 1278 | |
| 1279 | err = q.Close() |
| 1280 | s.NoError(err) |
| 1281 | |
| 1282 | s.Equal(2, val) |
| 1283 | |
| 1284 | err = stmt.Close() |
| 1285 | s.NoError(err) |
| 1286 | |
| 1287 | return nil |
| 1288 | }) |
| 1289 | s.NoError(err) |
| 1290 | } |
| 1291 | |
| 1292 | { |
| 1293 | stmt, err := sess.SQL().Select(3).Prepare() |
| 1294 | s.NoError(err) |
| 1295 | s.NotNil(stmt) |