File: preparedpsql.adb

package info (click to toggle)
libgnatcoll 1.6gpl2014-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 22,760 kB
  • ctags: 10,162
  • sloc: ada: 132,013; ansic: 94,291; python: 3,762; sh: 2,781; cpp: 1,394; makefile: 342; xml: 31; sql: 6
file content (84 lines) | stat: -rw-r--r-- 3,710 bytes parent folder | download
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
------------------------------------------------------------------------------
--                             G N A T C O L L                              --
--                                                                          --
--                     Copyright (C) 2011-2014, AdaCore                     --
--                                                                          --
-- This library is free software;  you can redistribute it and/or modify it --
-- under terms of the  GNU General Public License  as published by the Free --
-- Software  Foundation;  either version 3,  or (at your  option) any later --
-- version. This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
------------------------------------------------------------------------------

with Ada.Calendar;          use Ada.Calendar;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Text_IO;           use Ada.Text_IO;
with GNATCOLL.SQL;          use GNATCOLL.SQL;
with GNATCOLL.SQL.Exec;     use GNATCOLL.SQL.Exec;
with GNATCOLL.SQL.Inspect;  use GNATCOLL.SQL.Inspect;
with GNATCOLL.SQL.Postgres; use GNATCOLL.SQL.Postgres;
with GNATCOLL.Traces;       use GNATCOLL.Traces;
with GNATCOLL.VFS;          use GNATCOLL.VFS;

--  Load the auto-generated file that describes the database
with Dbschema;              use Dbschema;

--  This test does not actually execute queries on a postgreSQL server,
--  since that requires a more complex setup that nightly runs might not
--  have.

procedure PreparedPsql is
   Me : constant Trace_Handle := Create ("MAIN");

   Descr    : Database_Description;
   DB1      : Database_Connection;

   Q : constant SQL_Query := SQL_Select
      (Fields => Data.Id,
       From   => Data,
       Where  => Data.Value = Integer_Param (1)
         and Data.Name = Text_Param (2) and Data.Amount = Money_Param (3));

   P2 : constant Prepared_Statement := Prepare (Q, On_Server => True);

   procedure Do_Test is
      D  : Direct_Cursor;
      N  : aliased String := "name";
   begin
      --  Check that we do not insert extra quotes around parameters
      D.Fetch (DB1, P2, Params => (1 => +2, 2 => +N'Access));
   end Do_Test;

begin
   --  If you want to see what SQL commands are executed, create a file
   --  called ".gnatdebug" in the current directory, that contains a
   --  single "+" (see documentation for GNATCOLL.Traces)

   GNATCOLL.Traces.Parse_Config_File;

   --  Connect to the database.
   --  We will not execute queries on this database, since this requires
   --  a complex setup.

   Descr := GNATCOLL.SQL.Postgres.Setup (Database => "test");
   DB1 := Descr.Build_Connection;

   Do_Test;

   --  Free memory

   Free (Descr);
   Free (DB1);
   GNATCOLL.Traces.Finalize;
end PreparedPsql;