Slick

2015-10-23 25 views
10

içinde enterpolated SQL sorgusu yazdırma Interraclated bir Slick2 SQL deyimi hata ayıklama için yazdırmaya çalışıyorum ve tüm aldığım soru işaretleri olan örn.Slick

def query(name: String) = sql"SELECT MAX(age) FROM users WHERE name = $name".as[Int] 
println(query("Bob").getStatement) 

yukarıdaki baskılar bu:

SELECT MAX(age) FROM users WHERE name = 'Bob' 

Not:

SELECT MAX(age) FROM users WHERE name = ? 

Nasıl bu baskı yapabilir Bu sorular itibaren this

+1

Çözmeye çalıştığınız sorun kesinlikle kaygan değil: slick JDBC düzeyinde hazırlanmış ifadeler oluşturur ve bu şekilde yazdırılır. Dikkatinizi dikkatinize odaklamak yerine, JDBC tarafından hazırlanmış ifadelerin nasıl yazdırılacağına bakmanız gerektiğinden şüpheleniyorum. JDBC'de bunu yapmanın bir yolu olduğundan emin değilim. –

cevap

2

kopyası DEĞİLDİR slick documentation: "Girilen gerçek değeri almak için $ yerine # $ kullanabilirsiniz doğrudan sorguya ".

//note the '#' 
def query(name : String) = sql"SELECT MAX(age) FROM users WHERE name = '#$name'".as[Int] 
+0

Hayır, # $ 'ifadesini istemiyorum çünkü bunun anlamı, SQL deyiminin kendisinin (örneğin, tablo adları vb.) Bölümlerine eklenir. Bu yanlış bir SQL üretecektir çünkü '' name '' yerine '' adı '' yerine '' Bob '' yapacaktır. – pathikrit

+0

Değişkenleri bağlamak için istiyorum ... } def sorgusu (birthdate: LocalDate) = sql [Int] ' Burada, kapsamda doğru örtük varsa, doğru SQL bağlama değişkenine dönüşecektir. Eğer # $ 'i kullanırsam, istemediğim' 'toDüğmesi' 'nin' to. – pathikrit

+0

Uygun sql oluşturmak için sorguya tek tırnak ekledim. Ben "non-ilkel" için println göstermek istiyorum ne bilmiyorum, çünkü bu bir sql sorguya gidebilir sadece değerler ... –

3

Muhtemelen konsolunda derlenmiş sorgu dizeleri göstermesini istediğiniz dosyasına koyarak

logger.scala.slick.session=DEBUG 

Bu aşağıdaki eklemek istiyorum.

+0

Bir Play uygulamasına sahibim. Ben hem benim application.conf için ekledim ve bunu logger.xml dosyasına ekledim: '' Ama, onu göremiyorum ... – pathikrit

+0

Logger.xml dosyasında "DEBUG" için günlük seviyesine geçtiğinizde ne olur? –

+0

Aynı. Ben de DEBUG'a düşürdüm. Hiçbir şey değil. Ben Slick 2.0 + Play 2.2 var – pathikrit