2011-11-14 62 views
0

我试图使用方法如下执行INSERT sqlite的语句到我的数据库:包括SQLite中插入语句斜线

public void insertBluetoothPath(String path, String build) { 

    String[] ColumnName = new String[1]; 
    ColumnName[0] = "path"; 

    SQLiteDatabase myDB = null; 
    myDB = this.openOrCreateDatabase(DB_PATH, MODE_PRIVATE, null); 

    myDB.execSQL("INSERT INTO phones VALUES(" + build + ", " + path + ");"); 
    myDB.close(); 

} 

和我打电话使用 insertBluetoothPath(finalPath, phoneBuild);

与变量的方法 String phoneBuild = Build.MODEL;String finalPath = "/mnt/sdcard"

但是,我收到语法错误异常

sqlite returned: error code = 1, msg = near "/": syntax error 

Failure 1 (near "/": syntax error) on 0x2b3ca8 when preparing 'INSERT INTO phones VALUES(sdk, /mnt/sdcard);'. 

如何在数据库中插入斜杠?提前致谢。

+0

尝试使用准备好的语句 - http://stackoverflow.com/questions/433392/how-do-i-use-prepared-statements-in-sqlite-in-android – Eugene

+0

你应该使用转义字符。检查这个帖子。 http://stackoverflow.com/questions/4132996/escape-special-characters-in-sqlite –

回答

4

好的,请仔细阅读尤金的评论。

问题不在于斜线......问题在于你的插入语句。 INSERT语句看起来应该是这样的:“INSERT INTO phones VALUES('sdk','/ mnt/sdcard')” 请注意你的语句中缺少单引号?

这是你想要

myDB.execSQL("INSERT INTO phones VALUES('" + build + "', '" + path + "');"); 

但如果你问我,请不要使用此方法,使用准备好的语句,因为上面的方法就容易受到SQL注入,如果你不小心的。

+0

感谢您的回答!有效 – androidnoob

0

只是用这样的单引号包装路径。

myDB.execSQL("INSERT INTO phones VALUES(" + build + ", " + "'" + path + "'" + ");"); 

我认为这应该有所帮助。