2012-07-08 85 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)+")");