You're right :) When I isolated the issue thanks to some help it turns out 
java.jdbc is working fine but I wasn't getting the resultset output 
properly in the function. So got it resolved and working like this:

(defn get-member [id]
    (let [id (parse-int id)
          member (first (jdbc/query db ["SELECT id, username, firstname, 
lastname, email FROM members WHERE id = ? ORDER BY id ASC LIMIT 1" id]))]
    (session/put! :member member)
    (session/put! :next     (+ id 1))
    (layout/render "member/profile2.html" {:member member})))

So java.jdbc working just fine, able to get the results, set in session, 
etc. Thanks for all the feedback. 

On Saturday, February 15, 2014 9:55:16 PM UTC-8, edbond wrote:
>
> I spot invalid let here:
>
> (defn get-a-member [id]
>     (let [id (parse-int id) member]
>     [member (memberdb/get-member id)]
>
> should be 
>
> (defn get-a-member [id]
>     (let [id (parse-int id)
>           member (memberdb/get-member id)]
>
>
> On Sunday, February 16, 2014 4:01:03 AM UTC+2, The Dude (Abides) wrote:
>>
>> Thanks, here's the entire stack trace:
>>
>> java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to 
>> clojure.lang.IFn
>>                      members.clj:33 sikhpyar.routes.members/get-member
>>                      members.clj:50 sikhpyar.routes.members/fn
>>                         core.clj:94 compojure.core/make-route[fn]
>>                         core.clj:40 compojure.core/if-route[fn]
>>                         core.clj:25 compojure.core/if-method[fn]
>>                        core.clj:107 compojure.core/routing[fn]
>>                       core.clj:2443 clojure.core/some
>>                        core.clj:107 compojure.core/routing
>>                     RestFn.java:139 clojure.lang.RestFn.applyTo
>>                        core.clj:619 clojure.core/apply
>>                        core.clj:112 compojure.core/routes[fn]
>>                        core.clj:107 compojure.core/routing[fn]
>>                       core.clj:2443 clojure.core/some
>>                        core.clj:107 compojure.core/routing
>>                     RestFn.java:139 clojure.lang.RestFn.applyTo
>>                        core.clj:619 clojure.core/apply
>>                        core.clj:112 compojure.core/routes[fn]
>>                   middleware.clj:17 
>> sikhpyar.middleware/template-error-page[fn]
>>                   middleware.clj:10 sikhpyar.middleware/log-request[fn]
>>                   middleware.clj:44 
>> noir.util.middleware/wrap-request-map[fn]
>>               keyword_params.clj:32 
>> ring.middleware.keyword-params/wrap-keyword-params[fn]
>>                nested_params.clj:70 
>> ring.middleware.nested-params/wrap-nested-params[fn]
>>                       params.clj:58 ring.middleware.params/wrap-params[fn]
>>                   middleware.clj:12 hiccup.middleware/wrap-base-url[fn]
>>            multipart_params.clj:107 
>> ring.middleware.multipart-params/wrap-multipart-params[fn]
>>                  validation.clj:153 
>> noir.validation/wrap-noir-validation[fn]
>>                      cookies.clj:72 noir.cookies/noir-cookies[fn]
>>                     cookies.clj:171 
>> ring.middleware.cookies/wrap-cookies[fn]
>>                     session.clj:142 noir.session/noir-flash[fn]
>>                        flash.clj:31 ring.middleware.flash/wrap-flash[fn]
>>                      session.clj:97 noir.session/noir-session[fn]
>>                      session.clj:85 
>> ring.middleware.session/wrap-session[fn]
>>                        Var.java:415 clojure.lang.Var.invoke
>>                       reload.clj:18 ring.middleware.reload/wrap-reload[fn]
>>                   stacktrace.clj:17 
>> ring.middleware.stacktrace/wrap-stacktrace-log[fn]
>>                   stacktrace.clj:80 
>> ring.middleware.stacktrace/wrap-stacktrace-web[fn]
>>                        jetty.clj:18 ring.adapter.jetty/proxy-handler[fn]
>>                    (Unknown Source) 
>> ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle
>>             HandlerWrapper.java:116 
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle
>>                     Server.java:363 org.eclipse.jetty.server.Server.handle
>>     AbstractHttpConnection.java:483 
>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
>>     AbstractHttpConnection.java:920 
>> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete
>>     AbstractHttpConnection.java:982 
>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete
>>                 HttpParser.java:635 
>> org.eclipse.jetty.http.HttpParser.parseNext
>>                 HttpParser.java:235 
>> org.eclipse.jetty.http.HttpParser.parseAvailable
>>         AsyncHttpConnection.java:82 
>> org.eclipse.jetty.server.AsyncHttpConnection.handle
>>      SelectChannelEndPoint.java:628 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
>>       SelectChannelEndPoint.java:52 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
>>           QueuedThreadPool.java:608 
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
>>           QueuedThreadPool.java:543 
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
>>                     Thread.java:744 java.lang.Thread.run
>>
>> Here's the route function:
>>
>> (defn get-a-member [id]
>>     (let [id (parse-int id) member]
>>     [member (memberdb/get-member id)]
>>     (session/put! :member-id (member :id))
>>     (session/put! :nexto     (+ (member :id) 1))
>>     (session/put! :username  (member :username))
>>     (session/put! :firstname (member :firstname))
>>     (session/put! :lastname  (member :lastname))
>>     (session/put! :email     (member :email))
>>     (layout/render "member/profile2.html" {:member member})))
>>
>> The route:
>>
>> (GET "/member/:id" [id] (get-a-member id))
>>
>> The model:
>>
>> (defmulti parse-int type)
>> (defmethod parse-int java.lang.Integer [n] n)
>> (defmethod parse-int java.lang.String [s] (Integer/parseInt s))
>>
>> (defn get-member [id]
>>   (let [id (parse-int id)]
>>   (jdbc/query  db ["SELECT * FROM members WHERE id = ? LIMIT 1" id])))
>>
>> I'm using parse-int to explicitly specify id as an integer.
>>
>> If I use just the query with no output to layout, or sessions, etc, it 
>> does show the output from the db.
>>
>> If I put just (str id) on the route handler, it does show the number of 
>> the id.
>>
>> So for sure the url is passing the id number and the db connection is 
>> fine. Am trying this with java.jdbc 0.3.3 and postgres 8.4-702.jdbc4 
>> driver. I had the version 9 before but I don't think the problem is the db 
>> driver. Appreciate any pointers.
>>
>> One other thing, if I use Korma everything works fine but if I use 
>> raw-exec it doesn't work. I tried Korma in a separate duplicate of this 
>> project to avoid any conflict with java.jdbc 0.3.3.
>>
>> I don't mind using a dsl but I'd really like to have access to raw sql as 
>> and when needed to take advantage of years of writing sql, which to me is a 
>> very pleasant dsl itself to interact with a db.
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to