Skip site navigation (1) Skip section navigation (2)

Re: macaddr data type and prepared statements

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Steve Foster <s(dot)p(dot)foster(at)leeds(dot)ac(dot)uk>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: macaddr data type and prepared statements
Date: 2008-08-04 15:33:31
Message-ID: 881893AA-ECD5-4E59-AC3B-3A473193C868@fastcrypt.com (view raw or flat)
Thread:
Lists: pgsql-jdbc
Steve,

Prepared statements bind the in params to the type.

which is why it won't work.

if you used a statement and did what you did below it would work.

You can extend PGobject to create a PGMacaddr object to get it to work  
with prepared statements

Dave
On 4-Aug-08, at 10:46 AM, Steve Foster wrote:

> Dave,
>
> Yes its of type macaddr, if I build the statement manually (with all  
> the quoting uglyness) then its fine, e.g.
>
> create table test (a serial, b macaddr);
>
> insert into test (b) values ('00:00:00:00:00:00');
> insert into test (b) values ('00:00:00:00:00:01');
> insert into test (b) values ('00:00:00:00:00:02');
>
> Cheers
>
> Steve
>
> Dave Cramer wrote:
>> Steve,
>>
>>
>> What are the column types in the table. If it is macaddr type then  
>> this is expected behaviour.
>>
>> Dave
>> On 4-Aug-08, at 9:28 AM, Steve Foster wrote:
>>
>>> Hi All,
>>>
>>> I'm trying to bulk load some MAC addresses using a prepared  
>>> statement. But I keep on getting an error about incorrect datatype  
>>> (complains that I'm trying to insert "character varying").  Bellow  
>>> is an example of the code that I'm using:
>>>
>>> try {
>>>
>>>          Class.forName("org.postgresql.Driver");
>>>          conn = DriverManager.getConnection(jdbc_url, jdbc_user,  
>>> jdbc_pass);
>>>
>>>          PreparedStatement stmt = conn.prepareStatement("insert  
>>> into log (date, time, mac, network) values (?,?,?,?)");
>>>
>>>          while (inputLineIterator.hasNext()) {
>>>              String[] line = inputLineIterator.next();
>>>              if (line == null) {
>>>                  continue;
>>>              }
>>>          stmt.setDate(1, new  
>>> java.sql.Date( dfmt.parse(line[0]).getTime()) );
>>>          stmt.setDate(2, new  
>>> java.sql.Date( tfmt.parse(line[1]).getTime()) );
>>>          stmt.setString(3, line[2]);
>>>          stmt.setString(4, line[3]);
>>>          stmt.execute();
>>>          }
>>>
>>>          stmt.close();
>>> }
>>>
>>> Any recommendations?
>>>
>>> Cheers
>>>
>>> Steve
>>>
>>> -- 
>>> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpref/pgsql-jdbc
>>
>>
>
>
> -- 
> Steve Foster                     Email: s(dot)p(dot)foster(at)leeds(dot)ac(dot)uk
> Unix team                        Phone: 0113 343 7225
> Information Systems Services     Fax:   0113 343 5411
> University of Leeds
> Leeds LS2 9JT
>
> -- 
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc


In response to

Responses

pgsql-jdbc by date

Next:From: Oliver JowettDate: 2008-08-04 20:20:18
Subject: Re: macaddr data type and prepared statements
Previous:From: Steve FosterDate: 2008-08-04 14:46:51
Subject: Re: macaddr data type and prepared statements

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group