2012-07-08 67 views
2

我試圖從收件箱插入到SQLite數據庫的文本消息,但由於一些特殊的字符/符號它不能正確插入。插入SQLite

我經歷了一些在Stackoverflow中的問題,但似乎沒有用。

我得到了這段代碼,但它不工作。

data.execSQL("INSERT INTO recor(text) VALUES('"+DatabaseUtils.sqlEscapeString(messag)+"')"); 

我的數據庫只有一個在IT領域,我試圖與它一起插入郵件的細節。我將詳細信息(類型,時間,編號,消息)放在一個字符串message中,recor是我的表名。

這就是我使用try catch循環時得到的東西。

錯誤接近:

"FROM":syntax error:INSERT INTO recor(text) VALUES("FROM 15555215556 Message:-MSG")

+0

也許它只是一個錯字,你的意思是'record',而不是'recor'? – 2012-07-08 18:18:40

+0

否'recor'是我的表名... – suja 2012-07-08 18:19:25

+0

然後可能'recor.text'而不是'recor(文本)' – 2012-07-08 18:20:09

回答

2

採用DatabaseAdapter的插入方法來代替。例如

ContentValues values = new ContentValues(); 
values.put(COLUMN_NAME, value); 
dbAdapter.insert(TABLE_NAME, null, values); 

它看起來像你的列名是「文」?這一定是錯誤的,因爲text是sqlite中的關鍵字。

+0

我無法想象'text'不能成爲sqlite中的列名 – 2012-07-08 18:24:28

+0

我也是@padde ...我不認爲文本在這裏做的問題很多...問題是當一些符號來的時候它沒有得到插入.. – suja 2012-07-08 18:27:39

+0

謝謝你的工作... – suja 2012-07-08 19:08:31

0

您的最終SQL字符串似乎在您要插入的字符串周圍包含兩組引號,所以我假設DatabaseUtils.sqlEscapeString方法在字符串周圍添加了自己的引號。

因此,你的代碼應該是:

data.execSQL("INSERT INTO recor(text) VALUES("+DatabaseUtils.sqlEscapeString(messag)+")");