2011-06-19 35 views
8

Ormlite for Android的轉義字符串是否有原生方式?Ormlite轉義字符串方法?

例如,如果我想提供一個字符串:ormlite的轉義函數,它需要作爲ormlite的轉義函數提供。

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats) 
    .prepare()) 

我試着用UpdateBuilder的escapeValue方法,但它只是提出了以下變化: 「ormlite的逃生功能」。它將單引號添加到語句的開始和結尾。是否有一個本地支持逃脫字符串是安全的SQL注入?

如果不是,有什麼辦法呢?

謝謝!

+0

五月像'()'中的第一個字符串'' - 方法是潛在的注入安全缺失? – unlimited101

回答

15

我試過使用UpdateBuilder的escapeValue方法,但它只做了以下更改:'ormlite的轉義func'。它將單引號添加到語句的開始和結尾。是否有一個本地支持逃脫字符串是安全的SQL注入?

這是常見問題解答。執行此操作的正確方法是使用SelectArg參數,以便SQL可以使用?構造類型。這是另一個question talking about this

SelectArg selectArg = new SelectArg(stats); 
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare()); 

下面是關於選擇,ARG功能的文檔:

http://ormlite.com/docs/select-arg

下面是關於這個ORMLite用戶列表上的一些討論:

http://groups.google.com/group/ormlite-dev/browse_thread/thread/71d07202404f97e7

http://groups.google.com/group/ormlite-user/browse_thread/thread/7ced95c474031e3c

編輯:

由於@Moritz指出,如果你實際上是在更新數據庫,您還可以使用SelectArgUpdateBuilder

SelectArg arg = new SelectArg("Some value"); 
updateBuilder.updateColumnValue(MY_COLUMN, arg); 
+0

完美,它的工作。謝謝。 – the5threvolution

+1

順便說一句,這也適用於更新報表: 'SelectArg arg = new SelectArg(); arg.setValue(「Some value」); updateBuilder.updateColumnValue(MY_COLUMN,arg);' – Moritz